仅当下拉值不为零时才进行验证

时间:2013-12-07 17:02:58

标签: ruby-on-rails

我只是在表单中的不同字段(下拉列表)不是nil时才尝试对字段执行验证。

我的验证检查电话号码是否有10位数字,仅在提供商不是零时才是唯一且存在

validates :phoneNumber,length: {is: 10}, uniqueness: true, presence: true, if: "!provider.nil?"

我的表格

  <%= f.select :provider, options_for_select(%w[AT&T T-Mobile Verizon]), :prompt => "Select Cellular Provider",:selected => nil%>

无论我做什么,即使我没有从我的下拉菜单中选择一个值,也会执行验证检查。 根据导轨指南,我可以将选择设置为nil,并且可以执行if验证 知道我在哪里弄错了吗?

谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

在与您聊天之后,我认为您需要继续验证长度,存在感和唯一性,此外还有您提到的案例:

validates :phoneNumber,length: {is: 10}, uniqueness: true, presence: true, if: lambda{ |record| record.provider.present? }

validates :provider, presence: true, if: lambda{ |record| record.phoneNumber.present? }