我想知道创建ActiveRecord对象时调用回调和验证的顺序是什么.
假设我有一些自定义验证&;回调如下所示:
validates :reference_code, :if => :reference_code, :on => :create
before_create :assign_reference
哪个先跑?需要首先进行回调,否则验证可能会失败.
我想知道创建ActiveRecord对象时调用回调和验证的顺序是什么.
假设我有一些自定义验证&;回调如下所示:
validates :reference_code, :if => :reference_code, :on => :create
before_create :assign_reference
哪个先跑?需要首先进行回调,否则验证可能会失败.
最新版本的Rails列表可以在ActiveRecord::Callbacks
documentation中找到.轨道4、3和;下面是两个例子.
该列表的最新版本可以在轨道4 Guides中找到.
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback
before_destroy
around_destroy
after_destroy
after_commit/after_rollback
该列表的最新版本可以在轨道3 Guides中找到.
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
before_destroy
around_destroy
after_destroy
该列表的最新版本可在轨道2.3 Guides页中找到
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
before_validation
before_validation_on_update
after_validation
after_validation_on_update
before_save
before_update
after_update
after_save
before_destroy
after_destroy
因为需要首先验证reference_code
,所以可以在after_validation
回调中调用assign_reference
方法,或者在我上面提供的列表中,在它之后出现的任何回调中调用assign_reference
方法.