在我的代码中,我试图从JSON动态实例化一个ActiveRecord模型。样本Json是:
{"id":10,"name":"XYZ"}
当我尝试从Ruby实例化时:
file_name = "json_file.json"
method = "name"
klass = Kernel.const_get(method.classify)
json = File.read(file_name)
instance = klass.new.from_json(json)
但是,当创建类型为Name
的实例时,它不包含JSON中的id
值。它没有,而我希望它是指定的10。
如果我尝试插入instance.save!
,那么每次都会创建一个新ID,这不是我想要的。
可能是什么原因?
答案 0 :(得分:0)
在Rails中,ActiveRecord默认负责分配记录ID,所以发生的事情是Rails忽略了JSON的这部分"id":10
。
你需要做的是覆盖ActiveRecord的这种默认行为(理想情况下你不应该这样做),你怎么做我不确定,虽然你可以做些什么,检查{{ 3}}出来this question也可能会对这个话题有所了解。祝你好运。