【发布时间】:2012-11-01 09:46:00
【问题描述】:
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
因此,在进行任何验证之前,将调用 可更新 子例程,并用适当的错误填充 errors[:base] 数组,这意味着该对象不可更新。如果在此子例程中发现任何错误,我希望它跳过其余的验证,但上述示例不工作 - 它执行所有验证。
但是,如果我将 :if => "self.current_step == basic" 更改为 :if => "self.errors.empty? && self.current_step == basic" 就像一个魅力。
我做错了什么?示例显示,嵌套的 with_option 应该可以工作。
有人可以帮助我吗?提前致谢。
【问题讨论】:
-
在我看来,这是一个错误,因为条件没有合并在一起,所以实际上只涉及最后一个。希望有人会关注这个,它会在以后的版本中得到修复。
-
现在是 2021 年,Rails 6.0 仍然如此
标签: ruby-on-rails ruby validation nested