如果在视图中选中了复选框,我有一个验证属性是否存在的模型。
代码是这样的:
validates_presence_of :shipping_first_name, :if => :receive_by_email_is_unchecked
我期待这个验证的另一个条件。那我该如何做呢?
我的假设是这样的事情会发生:
validates_presence_of :shipping_first_name, :if => {:receive_by_email_is_unchecked,:form_first_step_validation}
我不确定这是否是这样做的写法?
任何建议都将不胜感激。
答案 0 :(得分:1)
您可以在数组中传递方法名称:
validates_presence_of :shipping_first_name, :if => [:receive_by_email_is_unchecked, :form_first_step_validation]
或者,如果您不想仅为调节验证定义单独的方法,则可以使用proc:
validates_presence_of :shipping_first_name, :if => proc { !receive_by_email? && form_first_step_validation }
答案 1 :(得分:0)
我认为这不会起作用,但请查看validates_presence_of https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/presence.rb的源代码
您可以构建自己的验证器来完成
答案 2 :(得分:0)
虽然Rails v 3 +
的语法可能略有不同,但它仍然有效我假设您正在使用Rails 2.x应用程序,因为您使用的语法不是Rails 3语法 Rails 3.x语法将是
validates :field_1, :field_2, :presence_of => true, :if =>
#在这里使用proc或一系列条件。请参阅@jimworm和@MichałSzajbe提供的有关此问题的有效示例和评论