2010-06-04 324 views
1

我不明白,沒有什麼比這更簡單:Before_save過濾器不工作

class Visit < ActiveRecord::Base 
    def before_save 
    self.visited_on = "test" 
    end 
end 

然而,如果我這樣做:

a = Visit.first 
a.user_id = 5 
a.save 
a.visited_on 
=> nil #WTF? 

我知道過濾器必須返回true,但是這一次是.. 。 可能是什麼問題?

回答

0

你確定你的記錄實際上被保存了嗎?如果user_id已經是5,那麼a.save將不執行保存。另外,如果visited_on是日期和/或時間,那麼「測試」可能會被轉換爲零。嘗試使用當前時間或類似的東西。

+0

對不起,我已經做過這些測試。 visited_on是一個字符串(我知道這是愚蠢的,但它是我發現能夠使用Visit.count(:all,:group =>:visited_on)得到按天分組的結果的唯一方法 是的,在嘗試保存之前,我確實將用戶(或任何其他屬性)更改爲隨機值。我可以在日誌中看到保存已完成,但before_filter未執行,非常奇怪! – Alain 2010-06-04 16:53:00

0

典型的愚蠢dev錯誤:我有兩個類訪問我的代碼。我不知道它是如何發生的,但刪除空白類修復了問題。對不起,浪費你的時間。