gpt4 book ai didi

ruby-on-rails-3 - rails 3.0 在创建时触发验证,以进行本应仅更新的验证

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

我们正在从 rails 2.3 升级到 rails 3,我们对以下模型进行了一些验证:

validates_length_of :corporate_type,  :in => 1..255, :allow_blank => false, :on => :update, :if => Proc.new { |rra| rra.show_corporate_type? }

在 rails 2.3 中,这只在更新时调用,但在 rails 3 中,它似乎在创建时调用,这破坏了下游的一些东西...有人可以解释为什么在创建时调用它吗?

这是堆栈:

app/models/rra_agreement.rb:11:in `block in <class:RRAAgreement>'

app/models/foo_application_delegate.rb:29:in `create_application'

第 28 和 29 行是:

rra = RRAAgreement.new()
rra.save

第11行是上面的验证行

谢谢乔尔

最佳答案

我会尝试使用 :new_record? 执行以下操作

validates :corporate_type, :unless => :new_record?

新记录?如果刚刚创建,则返回 true,否则返回 false。

关于ruby-on-rails-3 - rails 3.0 在创建时触发验证,以进行本应仅更新的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737543/

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