在我的代码中,我正在尝试动态实例化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,这不是我想要的。
原因是什么?
在Rails中,ActivereCord默认情况下会处理记录ID,因此发生的事情是Rails忽略了您的JSON的"id":10
。
您需要做的是覆盖ActivereCord的这种默认行为(理想情况下您不应该这样做),尽管您可能会做些什么,但您不确定如何做,请检查此问题出去。这篇文章也可能会阐明该主题。祝你好运。