gpt4 book ai didi

ruby-on-rails - 如何跳过 Rails 中的 before_validations?

转载 作者:行者123 更新时间:2023-12-04 05:50:11 25 4
gpt4 key购买 nike

我的 before_validation 中有更新/修复一些模型数据的代码回调。

但是,我希望仍然能够运行验证以查看模型是否按原样运行。

更具体地说,我想知道数据库中的记录是否有效。所以我希望能够加载一个值并询问 .valid?没有运行我的回调会影响答案。

所以,我尝试了这个(以及一些变体)但它没有用:
skip_callback :validation, :before, unless: ->{self.changed?}skip_callback 的文档很差,所以我不确定我是否正确使用它。这可以工作吗?

谢谢。

最佳答案

根据 APIDock skip_callback 需要 callback_name ,然后 *filter_lists作为参数(然后是块)。
filter_list必须包含您的回调方法名称。像下面这样。

class User < ActiveRecord::Base
validates_presence_of :name
before_validation :set_name

skip_callback :validation, :before, :set_name, unless: -> { self.changed? }

def set_name
self.name ||= 'foobar'
end
end

#<User:0x007ffcd7165248 id: 2, name: nil, created_at: Fri, 03 Feb 2017 01:10:37 UTC +00:00, updated_at: Fri, 03 Feb 2017 01:10:37 UTC +00:00>

User.find(2).valid? # returns false

user = User.find(2)
user.updated_at = Time.now
user.valid? # returns true, because it invokes :set_name before validation

关于ruby-on-rails - 如何跳过 Rails 中的 before_validations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42011799/

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