簡體   English   中英

Ruby on Rails 回調,before_save 和:before_create 有什么區別?

[英]Ruby on Rails Callback, what is difference between :before_save and :before_create?

您能否詳細解釋一下 Rails 回調上的:before_save:before_create Ruby 是什么,以及它們與 Rails 驗證有什么關系? 驗證是否發生在:before_save:before_create

在 Rails 下的創建操作中,數據庫操作之前有 6 個回調,之后有 2 個。 按順序,這些是:

  1. before_validation
  2. before_validation_on_create
  3. after_validation
  4. after_validation_on_create
  5. before_save
  6. before_create

    數據庫插入
  7. after_create
  8. after_save

更新操作具有完全相同的集合,除了讀取update而不是到處create (以及UPDATE而不是INSERT )。

從中可以看出,驗證是在before_savebefore_create回調之前進行的。

before_save發生在before_create之前。 據我所知,他們之間沒有發生任何事情。 但是before_save也會在更新操作時觸發,而before_create只會在創建時觸發。

每次保存 object 時都會調用before_save 所以對於新的和現有的對象。 (創建和更新操作)

before_create僅在創建之前。 因此僅適用於新對象(創建操作)

before_create vs before_save:on =>:create

有時您必須注意回調的順序

有關更多詳細信息,請參見此處: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM