我正在尝试让我的自定义验证工作create
。但是当我执行find
then时save
,rails 将其视为create
并运行自定义验证。如何使验证仅在创建新记录时才起作用,而不是在更新找到的记录时?
问问题
29826 次
2 回答
101
在您的验证代码行上试试这个:
validate :custom_validation, on: :create
这指定仅对create
操作运行验证。
来源:
于 2012-05-25T03:09:04.577 回答
9
TL;博士; 完整示例:
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
希望对下一个人有帮助!
于 2017-09-02T22:11:35.567 回答