是否有任何方法仅在特定表单(控制器的操作)中触发验证,而不是在每次保存或更新时全局触发?
类似User.create(:validate=>true)
标志的东西。
答案 0 :(得分:8)
是的,您可以为验证提供条件,例如:
validates_presence_of :something, :if => :special?
private
def make_sepcial
@special = true
end
def special?
@special
end
现在,要启用这些验证,您需要做的就是:
s = SomeModel.new
s.make_special
答案 1 :(得分:4)
正如您在评论中所解释的那样,您希望跳过新记录的验证。在这种情况下,您可以使用thomasfedb的答案,但不要使用@special
变量,但是:
validates_presence_of :something, :if => :persisted?
这将仅验证已保存的User
,但不会验证新的User
。请参阅persisted?
上的API文档。
答案 2 :(得分:1)
这有点旧。但我发现http://apidock.com/rails/Object/with_options是处理这种行为的好方法。