AnA*_*ice 31 json ruby-on-rails ruby-on-rails-3
我正在创建一个审核多个模型的AuditLog观察器.
我希望观察者有一个after_create,它创建一个存储在数据库列中的JSON对象.它将包含{photoid:123,photoname:"asdasd",creator_id:"asdasd"}等数据...
在Rails中,如何创建这种类型的JSON对象,然后如何将其与其他非JSON字段一起插入到数据库中?
谢谢
Mat*_*lly 62
当前版本的rails支持开箱即用的json序列化.在迁移中将字段定义为字符串(或文本),然后:
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
Run Code Online (Sandbox Code Playgroud)
tfe*_*tfe 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
Run Code Online (Sandbox Code Playgroud)