2015-05-05 75 views
1

我試圖獲得before_update模型回調,其中quote_file_date根據是否創建,更新或刪除quote_file而自動添加時間戳。這樣做的目的是讓我可以跟蹤文件的創建和更新時間。當屬性更新到新值或者爲零時Rails消息模型回調

我不確定如何加載ActiveModel實施髒::得到這個工作正常,但預期的行爲應該是:

  1. 在創建quote_file,創建quote_file_date時間戳。
  2. quote_file值更改時,將更新quote_file_date時間戳。
  3. 如果quote_file被刪除,quote_file_date被設置回零。

目前,我有:

class Job < ActiveRecord::Base 

    before_update :quote_file_updated?, on: [:create, :update], if: quote_file.identifier.changed? 

    private 

    def quote_file_updated? 
    self.quote_file_date = Time.now 
    end 

end 

我回來從這個錯誤是:

undefined method `quote_file' for #<Class:0x007fa3bbedfec0> 

什麼是最優雅的方式來實現這一目標使用回調模型?

回答

0

答案是對before_update回調更改爲:

before_update :quote_file_updated?, on: [:create, :update], if: ->(r) { r.quote_file_changed? }