[英]How to initialize an Active Record attribute in after_initialize?
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
。 有沒有辦法做到這一點?
我希望不必重寫initialize
方法 。
每次實例化用戶時 ,發布的代碼都試圖設置名稱(例如User.new,User.first,User.all)
如果您打算在name
為nil時使用name = "Bob"
保存記錄,請在before_validation
或after_validation
。
如果您打算在name
為nil時僅返回“ Bob”,請在getter中執行此操作:
def name
@name ||= "Bob"
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.