gpt4 book ai didi

ruby-on-rails - Rails 嵌套 with_option :if used in validation

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:42 26 4
gpt4 key购买 nike

validate :updatable?  # First validation there is
with_options :if => Proc.new { |object| object.errors.empty? } do |updatable|
updatable.with_options :if => "self.current_step == basic" do |step|
validates .... bla-bla bla

因此,在进行任何验证之前,updatable 子例程被调用,它用适当的错误填充 errors[:base] 数组,这意味着该对象不可更新.如果在此子例程中发现任何错误,我希望它跳过其余的验证,但上述示例工作 - 它执行所有验证。

但是,如果我将 :if => "self.current_step == basic" 更改为 :if => "self.errors.empty? && self.current_step == basic" 很有魅力。

我做错了什么?示例表明,嵌套的 with_option 应该可以工作。

有人可以帮助我吗?提前致谢。

最佳答案

你是对的,当嵌套两个 :if 条件时,内部的将替换外部的并且总是被检查。处理两级嵌套的解决方法是:

with_options :unless => !(outer condition) do
with_options :if => (inner condition) do

if 和 unless 条件不会相互覆盖。我不确定我会称之为错误,但如果您可以嵌套多个 :if 条件,那就太好了。

关于ruby-on-rails - Rails 嵌套 with_option :if used in validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174435/

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