user.rb
after_initialize :init
private
def init
self.name ||= 'Bob'
end
IRB
irb> User.select('id')
(Object doesn't support #inspect)
如果我将回调更改为before_validation
,则上述查询有效。
理想情况下,我希望能够在after_initialize
中保持初始化。有没有办法实现这个目标?
答案 0 :(得分:-1)
发布的代码试图在每次用户实例化时设置名称(例如User.new,User.first,User.all)
如果您打算在name = "Bob"
为零时使用name
保存记录,请在before_validation
或after_validation
中执行此操作。
如果您打算在name
为零时返回“Bob”,请在getter中执行此操作:
def name
@name ||= "Bob"
end