假设我有一个模型,我可能需要在保存它之前操作它的一些属性:
class User < ActiveRecord::Base
attr_accessible :name, :email
# before_validation :set_name_from_email, on: :save
# OR
# before_save :set_name_from_email
def set_name_from_email
self.name ||= email
end
end
如果我必须validates :name, presence: true
那么当然这将不得不进入before_validation
. 但是,如果(按照现在的代码)回调没有机会影响对象的有效性,那么将其放入是否更好before_save
?
让所有数据在一个或另一个存储桶中处理回调似乎更整洁,以防代码更改并且回调现在可能会影响有效性,但是在调用诸如.valid?
.
有什么强烈的意见吗?