我正在尝试将自定义验证用于create
。但是当我执行find
然后save
时,rails会将其视为create
并运行自定义验证。如何在仅在更新找到的记录时创建新记录时才能使验证工作?
答案 0 :(得分:68)
您的问题标题指定了rails 2.3.11,但您的标记显示了rails 3.1。我把标题作为你需要的实际版本。
在您的验证码上尝试此操作:
validate :custom_validation, :on => :create
指定仅对create
操作运行验证。这是apidocs
答案 1 :(得分:4)
class MyPerson < ActiveRecord::Base
validate :age_requirement
private
def age_requirement
unless self.age > 21
errors.add(:age, "must be at least 10 characters in length")
end
end
end
要使验证程序仅在创建新对象时运行,您可以将示例的第2行更改为:validate :age_requirement, on: :create
仅限更新:validate :age_requirement, on: :update
希望能帮助下一个人!