簡體   English   中英

如何在after_initialize中初始化Active Record屬性?

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

如果您打算在name為nil時僅返回“ Bob”,請在getter中執行此操作:

  def name
    @name ||= "Bob"
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM