gpt4 book ai didi

ruby-on-rails - before_validation,在 : :save vs before_save

转载 作者:行者123 更新时间:2023-12-02 06:03:25 24 4
gpt4 key购买 nike

假设我有一个模型,我可能需要在保存它之前操作它的一些属性:

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 中是否更好?

将所有数据操作回调放在一个或另一个桶中似乎更整洁,以防代码更改并且回调现在可能会影响有效性,但是在调用诸如 .有效吗?

有什么强烈的意见吗?

最佳答案

通常我会将所有数据操作放在 before_save 中,因为将所有数据操作放在一个地方(保存之前)是合乎逻辑的。

但是,如果您将来要对名称字段进行验证(即使数据操作不影响有效性),您应该将数据操作放在 before_validation 中,因为您不需要想要在验证数据 x 时将数据 y 存储在数据库中。

您可以在这里阅读更多相关信息: http://bashar3a.com/2011/09/02/activerecord-callback-gotchas-before_save-vs-before_validate/

关于ruby-on-rails - before_validation,在 : :save vs before_save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com