满足条件时跳过某些字段的验证

Skip validation on certain field when a condition is met

您好,我在尝试执行以下操作时遇到了问题。

我正在制作一个结帐页面,我有一个这样的表格

  <%= form_for([@ofert, @order], builder: FoundationFormBuilder) do |f| %>

    <%= f.fields_for :invoice_address do |builder| %>
        <%= render partial: 'invoice_address_fields', locals: { f: builder } %>
    <% end %>

    <%= f.check_box :invoice_equals_shipping, checked: true, label: 'My Invoice address is the same Shipping address' %>

    <%= f.fields_for :shipping_address do |builder| %>
      <%= render partial: 'shipping_address_fields', locals: { f: builder } %>
    <% end %>

    .....
    <% end %>

复选框 "My Invoice address is the same Shipping address" 默认选中,"shipping_address" 字段默认使用 jquery 隐藏。

开始时两个字段都是空的,所以用户通常会填写 invoice_address 字段并选中复选框 "My Invoice address is the same Shipping address",问题是隐藏字段 "shipping_address" 已验证 "field cannot be blank"

如何验证选中复选框时不验证字段?

您可以在模型中向 validates 添加条件。类似于:

validates :shipping_address, presence: true, unless: :invoice_equals_shipping?