【发布时间】:2019-11-21 03:17:48
【问题描述】:
我有这样的课程
# json_column :json
class MyClass < ActiveRecord::Base
def name=(val)
json_column[:name] = val
end
def name
json_column[:name]
end
end
当我加载数据时它工作正常,但如果我创建一个像MyClass.new(name: "foo") 这样的新实例,我的问题就开始了......
如果我让它保持原样,它会在name= 中抛出一个异常,因为 nil 不是哈希 :)。
如果我尝试在 after_initialize 方法中初始化 json_column
after_initialize { self.json_column ||= {} }
它也不起作用,因为似乎在设置参数后调用了after_initialize
有人提示我应该如何解决这个问题? 提前谢谢你
【问题讨论】:
-
为什么不在迁移中?您将节省大量时间,因为 Active Record 回调很麻烦。
-
嗨@SebastianPalma,你的意思是默认值?不幸的是,无法将 default 值设置为 json 列
-
你用的是什么数据库?
-
我使用的是 MySQL 5.7
标签: ruby-on-rails json serialization