我正在使用Ruby on Rails 3.2.9。我实现了custom validator,我想在使用validate
方法时跳过验证(在迁移文件中创建新对象)。一般情况下,我可以使用:without_protection => true
作为create!
方法的参数,但在我的情况下(请参阅下面的代码),它似乎不起作用:不会跳过验证。
class Article < ActiveRecord::Base
validate do
# custom validation code
end
end
如何跳过验证?
答案 0 :(得分:1)
您必须确保禁用所有其他验证才能使其生效。 ActiveRecord不能有选择地禁用验证,但可以完全省略它们。
例如:
class Article < ActiveRecord::Base
validate :something,
:if => :validations_are_turned_on?
validate :always
protected
def validations_are_turned_on?
!@validations_disabled
end
end
使用适当的:if
条件标记任何非基本验证都应该有效。在这种情况下,如果未设置@validations_disabled
,则将运行所有验证。
答案 1 :(得分:1)
如果没有保护不关闭验证,它允许您批量分配受保护的属性。要保存而不验证:
new_record = Article.new
new_record.save(:validate => false)