我正在以JSON格式从消息队列中取出记录,并且如果我可以简单地传入记录并构建对象,则想要使用ActiveRecord的.build方法。
我该怎么做?这种方法有什么缺点吗?
答案 0 :(得分:1)
原则上你可以使用YourModel.new.from_json(json_string)
但是它的行为取决于布尔值ActiveModel::Base.include_root_in_json
。如果你的json是一个简单的哈希/对象,那么首先将其设置为false;如果你的json是to_json
生成的嵌套哈希(默认情况下再次),则将其保留为true(默认值)。
所有方法都是将json解码为哈希并调用self.attributes = hash
,所以你可以自己轻松地做到这一点。
关于缺点,这个过程确实没有任何具体内容。你基本上在标准的create
控制器方法中做了同样的事情,充满了验证,attr_accessible限制等等。