投稿の最後の3つのコメントである3つの要素の配列を保存します。 CommentテーブルをPostテーブルに結合できることは知っていますが、スケーリングのためにこのような重いリクエストを行うことは避けたいと思います。
だから、新しいコメントが作成されるたびに簡単に更新したいので、最後のコメントを削除して新しいコメントを追加するので、これらの3つの要素を保存する最良の方法は何だろうと思っていました。
これを行う正しい方法は何ですか?シリアル化された配列またはJSONオブジェクトに保存しますか?
ActiveRecordのserialize
宣言を使用して配列とハッシュを保存できます。
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']
オブジェクト型が等しいクラス名を指定できます(この場合はArray
)。これはより明示的で、少し安全です。また、既存の(空の)配列に追加できるため、最初の値を割り当てるときに配列を作成する必要はありません。
class Comment < ActiveRecord::Base
serialize :stuff, Array
end
comment = Comment.new # stuff: []
comment.stuff << 'some' << 'stuff' << 'as array'
Storeと呼ばれるすてきなバージョンを使用することもできます: http://api.rubyonrails.org/classes/ActiveRecord/Store.html
これは、組み込みメソッドを使用してユースケースを処理する必要があります。