2011-06-02 47 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