![](/img/trans.png)
[英]How do I set a default value in rails active record based on two other values in the active record?
[英]How to set a default value for a JSON column/attribute in a Rails active record?
我有这样的东西
# 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
有人有提示我应该如何解决此问题? 先感谢您
您可以使用store然后after_initialize这样的回调来分配默认值
store :json_column_name, accessors: [:key_name], coder: Hash # in mysql
store_accessor :json_column_name, [:key_name] # in psql
after_initialize :initialize_defaults, :if => :new_record?
def initialize_defaults
self.key_name = value
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.