我正在创建一个可以监视多个模型的AuditLog观察者。
我希望观察者有一个after_create,它创建一个存储在数据库列中的JSON对象。它将包含{photoid:123,photoname:“asdasd”,creator_id:“asdasd”}等数据......
在Rails中,如何创建这种类型的JSON对象,然后如何将其与其他非JSON字段一起插入数据库?
由于
答案 0 :(得分:62)
当前版本的rails支持开箱即用的json序列化。在迁移中将字段定义为字符串(或文本),然后:
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
答案 1 :(得分:10)
首先,一定要查看ActiveRecord序列化并查看它是否符合您的要求:http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize
但是,如果你需要专门的JSON(序列化默认使用YAML),那么你总是可以手工伪造它。
您可以简单地在Ruby中构建哈希,然后在将其分配给模型属性之前调用to_json
。
data = { 'photoid' => 123, 'photoname' => "asdasd", 'creator_id' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save
答案 2 :(得分:-3)
看看这个:http://github.com/laserlemon/vestal_versions
如果它不是你想要的,它至少会告诉你它已经完成了。