2011-06-02 36 views
0

我只是想知道這裏是否有人知道ActiveRecord何時使用它來「記錄時間戳」(例如created_at,updated_at)。ActiveRecord使用哪種回調來記錄時間戳?

我的意思時,是在其回調? (如果AR使用回調)。

我問這是因爲我希望創建一個自動更新列(每一個對象,記錄序列號),我想複製AR辦法做到這一點,儘可能。

編輯: 看來,AR做它after_validation和before_create/before_update之間。您可以通過爲created_at列創建呈現驗證並插入帶有空白created_at的新記錄來做一些測試,它會返回一個錯誤。

回答

1

我不知道在哪裏AR做的,但對於你的描述聽起來像before_create

+0

嗯..我已經把存在驗證了「created_at」嘗試的東西,它會返回錯誤。看起來AR是在after_validation和before_create/before_update之間執行的。 – giosakti 2011-06-02 06:50:20

1

在Rails 3.2.12什麼合適的地方,這個代碼位於lib/active_record/timestamp.rb

正如你在你的問題和DGM建議中提到的那樣,Rails將在創建或更新時更新時間戳,因此在before_createbefore_update中應該使用代碼。

您可能還需要看一看the ActiveRecord counter_cache functionality。 ActiveRecord支持創建一個可自動遞增/遞減的列。此外,您可以執行more complicated logic