在数据库中存储数组:JSON与序列化数组

我想存储一个由3个元素组成的数组:最后3个post的评论。 我知道我可以将评论表join到Post 1,但是我会避免这样做。

所以我想知道存储这3个元素的最佳方法是什么,因为每次发表新的评论时,我都会很容易地更新它们:删除最后的评论并添加新的评论。

什么是正确的方法来做到这一点? 将其存储在序列化数组或JSON对象中?

One Solution collect form web for “在数据库中存储数组: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'] 

你可以指定对象types应该等于的类名(在这个例子中是Array )。 这更明确,更安全。 当您分配第一个值时,您也不必创build数组,因为您可以追加到现有的(空)数组。

 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

这应该使用内置的方法来处理你的用例。

  • 当没有logging时用()find()
  • 如何在没有模板的情况下使用rails发送邮件?
  • 在Rails应用程序中查找未使用的代码
  • 价格字段的string,小数或浮点数据types?
  • 从ActiveRecord范围中删除顺序
  • 什么是Visual Studio用户最好的Ruby on Rails环境?
  • 在Rails之外使用Rails 3的ActiveSupport核心扩展
  • 通过迁移向列添加默认值
  • 什么是Rails模块中的mattr_accessor?
  • gemspec中的date格式指定无效
  • 无法在60秒内获得稳定的firefox连接(127.0.0.1:7055)