복붙노트

[RUBY-ON-RAILS] 데이터베이스에 배열을 저장 : 직렬화 된 배열 대 JSON

RUBY-ON-RAILS

데이터베이스에 배열을 저장 : 직렬화 된 배열 대 JSON

게시물의 마지막 3 개 댓글 : 루비 레일에로, 나는 3 개 요소의 배열을 저장할. 나는 포스트 하나에 코멘트 테이블을 조인 할 수 알지만, 목적 스케일링이 무거운 요청을 할 피할 것이다.

마지막 코멘트를 제거하고 새로운 하나를 추가 : 내가 쉽게 새로운 댓글이있을 때마다 그들을 업데이 트하려는 것처럼, 그 3 개 요소를 저장하는 가장 좋은 방법은 무엇인지 궁금 그래서.

이 작업을 수행하는 올바른 방법은 무엇입니까? 그것은 직렬화 배열이나 JSON 객체에 저장?

해결법

  1. ==============================

    1.당신은 액티브의 직렬화 선언을 사용하여 배열과 해시를 저장할 수 있습니다 :

    당신은 액티브의 직렬화 선언을 사용하여 배열과 해시를 저장할 수 있습니다 :

    class Comment < ActiveRecord::Base
      serialize :stuff
    end
    
    comment = Comment.new  # stuff: nil
    comment.stuff = ['some', 'stuff', 'as array']
    comment.save
    comment.stuff # => ['some', 'stuff', 'as array']
    

    당신은 객체 유형 (이 경우 배열에)에 동일해야하는 클래스 이름을 지정할 수 있습니다. 이것은 더 명시하고 조금 더 안전합니다. 또한 기존 (빈) 배열에 추가 할 수 있습니다 때문에 당신이 첫 번째 값을 할당 배열을 만들 필요가 없습니다.

    class Comment < ActiveRecord::Base
      serialize :stuff, Array
    end
    
    comment = Comment.new  # stuff: []
    comment.stuff << 'some' << 'stuff' << 'as array'
    

    http://api.rubyonrails.org/classes/ActiveRecord/Store.html : 당신은 깔끔한 버전이라고 저장소를 사용할 수 있습니다

    이것은이 방법을 내장하여 사용 사례를 처리해야합니다.

  2. from https://stackoverflow.com/questions/21312278/storing-arrays-in-database-json-vs-serialized-array by cc-by-sa and MIT license