繁体   English   中英

如何在Rails活动记录中为JSON列/属性设置默认值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM