ActiveRecord:仅对方法调用执行验证?

时间:2014-05-07 16:14:22

标签: ruby-on-rails ruby validation activerecord

在调用另一个Ruby文件中的某个方法后,我试图在ActiveRecord上调用验证。我是否可以通过某种方式将其与ActiveRecord的验证方案联系起来,即:

validate :cars_have_wheels?, on: after_cache_reset

注意:cars_have_wheels?是位于ActiveRecord对象中的方法,after_cache_reset是另一个文件中的方法。

谢谢!

1 个答案:

答案 0 :(得分:1)

查看此link(Ruby on Rails指南):

5条件验证 有时仅在满足给定谓词时验证对象才有意义。您可以使用:if和:unless选项,可以使用符号,字符串,Proc或数组。如果要指定何时进行验证,可以使用:if选项。如果要指定何时不应进行验证,则可以使用:unless选项。

5.1使用符号:if和:除非 您可以将:if和:unless选项与对应于将在验证发生之前调用的方法名称对应的符号相关联。这是最常用的选项。

class Order < ActiveRecord::Base
 validates :card_number, presence: true, if: :paid_with_card?

 def paid_with_card?
  payment_type == "card"
 end
end