仅当其他 simple_form 字段等于某个输入时才验证存在?

Validating the presence only if other simple_form field equals certain input?

在我的 simple_form 中,用户可以 select 一个 discount_type。使用 JQuery,apply_on 字段在加载 DOM 时隐藏,仅在 discount_type percent 为 [=34 时显示=]编辑。

问题:discount_type percent 被 select 编辑时,我只想验证 apply_on 的存在,但我不知道 how/where 可以这样做吗?

形式

<div class="col col-sm-4"><%= f.input :discount_type, collection: ['percent', 'price'] %></div>
<div class="col col-sm-4 apply_on_percentage"><%= f.input :apply_on, collection: ['reservation total', 'accommodation total'], prompt: "Choose on what to apply the discount" %></div>

<script>
  // Hide form field when DOM is loaded
  $(document).ready(function(){
    $('.apply_on_percentage').hide();
  });

  // Load form field when percentage is selected
  $(document).on("change", "#discount_discount_type", function(){
    var discount_type = $(this).val();
    if(discount_type === 'percent'){
      $('.apply_on_percentage').show();
    } else{
      $('.apply_on_percentage').hide();
    }
  });


</script>

根据 Max 的回答,我可以将以下内容添加到折扣模型中:

validates_presence_of :apply_on, if: ->{ discount_type == 'percent' }