我的Rails验证需要一些帮助。如果另一个字段具有特定值,我需要验证是否填写了一个字段。代码如下。
如果已选择扩展许可证,则需要填写扩展许可证类型。它不起作用,当我填写表单并选择扩展并且不检查extended_license_type的任何内容时,它验证正常,我得不到错误信息。
许可证字段是下拉列表,extended_license_type是一组复选框。
validates :license, presence: true
validates :extended_license_type, presence: true, :if => :license_extended?
private
def license_extended?
license == 'extended'
end
以下是表单的复选框。也许我的问题在于它们而不是验证。任何帮助将不胜感激。
<%= f.check_box :extended_license_type, {}, "ur" %>
<%= f.label :extended_license_type, "Unlimited Reproduction" %>
<%= f.check_box :extended_license_type, {}, "ms" %>
<%= f.label :extended_license_type, "Multi-User/Seat" %>
<%= f.check_box :extended_license_type, {}, "pr" %>
<%= f.label :extended_license_type, "Product for Resale" %>
<%= f.check_box :extended_license_type, {}, "ers" %>
<%= f.label :extended_license_type, "Product for Electronic Resale" %>
<%= f.check_box :extended_license_type, {}, "ed" %>
<%= f.label :extended_license_type, "Product for Electronic Distribution" %>
<%= f.check_box :extended_license_type, {}, "ep" %>
<%= f.label :extended_license_type, "Extended Legal Protection" %>
这是我的许可证字段下拉列表。
<%= f.select :license, [["Standard", "standard"], ["Extended", "extended"]] %>
答案 0 :(得分:1)
验证工作正常。它为extended_license_type传递'0'并且验证,因为我只是检查该字段的存在。
答案 1 :(得分:0)
尝试
validates_presence_of :extended_license_type, :if => :license_extended?
答案 2 :(得分:0)
我想在colon
,
private
private
def license_extended?
:license == 'extended'
end
validates_presence_of :extended_license_type, :if => :license_extended?
(或)
validates :extended_license_type, :presence => true, :if => :license?