【问题标题】:ruby from_json to instantiate object - ID not getting populatedruby from_json 实例化对象 - ID 未填充
【发布时间】:2016-06-18 14:38:47
【问题描述】:

在我的代码中,我试图从 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,这不是我想要的。

可能是什么原因?

【问题讨论】:

    标签: ruby json object instantiation


    【解决方案1】:

    在 Rails 中,ActiveRecord 默认负责分配记录 ID,因此 Rails 忽略了 JSON 的这部分 "id":10

    你需要做的是覆盖 ActiveRecord 的这个默认行为(理想情况下你不应该这样做),你会怎么做我不确定,虽然你可以做些什么,检查@987654321 @ 出去。 This post 也可能对这个话题有所启发。祝你好运。

    【讨论】:

    • 谢谢!但我希望这个对象作为一个独立的对象,独立于它的 ActiveRecord 基础。
    • 您写道“我正在尝试从 JSON 动态实例化 ActiveRecord 模型”,对吗?所以如果你的类继承自 ActiveRecord,那么它的默认值适用于你的类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多