0

Railsの検証についてサポートが必要です。別のフィールドに特定の値がある場合、1つのフィールドが入力されていることを検証する必要があります。コードは以下のとおりです。

ライセンスが拡張選択されている場合は、拡張ライセンスタイプを入力する必要があります。フォームに入力して拡張を選択し、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"]] %>
4

3 に答える 3

1

検証は問題なく機能していました。extended_license_typeに対して「0」を返していました。これは、そのフィールドの存在を確認するだけだったため、検証されます。

于 2013-01-03T23:42:33.433 に答える
0

試す

validates_presence_of :extended_license_type, :if => :license_extended?
于 2013-01-03T16:59:40.543 に答える
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?
于 2013-01-03T17:29:37.243 に答える