2015-04-03 66 views
0

我無法找到描述在每個ActiveRecord生命週期階段發生什麼的文檔。 GuideAPI列出了可用的回調。在每個ActiveRecord模型生命週期階段會發生什麼?

如果我不知道模型的狀態,或者生命週期中較早發生的事情,我該如何知道哪個回調是合適的?

例如,什麼時候模型得到持續,並獲得id?該指南列出回調:

3.1創建對象
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save的
after_commit/after_rollback

所以,我敢肯定,該模型沒有被持久化,並沒有和ID,之前調用before_save。我期望該模型具有id,然後調用after_save。不幸的是,我不知道這兩個模型之間的位置在哪裏,並且獲得了它的ID。

EDIT

再次,這純粹是一個例子。我已經更新了這個問題,以澄清:「在ActiveRecord模型生命週期階段的每個期間會發生什麼?」

+0

downvote沒有解釋?如果我知道你不喜歡它,我會提出更好的問題。 – 2015-04-03 16:54:44

回答

0

其實我無法提供給你一個鏈接,其中解釋了所有這些東西。

但是,如果我是你,我會實現一個方法,將在每個這些回調中調用,並且它可以幫助找出,當模型gaines它的id。

0

「保存」操作是在將記錄插入到數據庫的查詢執行時執行的,通常這個操作將分配一個id。

我不能肯定地說沒有例外,但是id在插入過程中通常由數據庫分配。指定的id可以作爲insert語句的一部分傳回給應用程序。