With_Options не выполняется должным образом - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть модуль для проверки и нескольких типов продуктов. В этом модуле я хотел бы сохранить условия для вида продукта MOCAP.

Эти проверки должны выполняться, только если product_type_mocap? правда. Однако они бегут, даже если это ложно ... У кого-нибудь есть идеи, почему? Я могу дать более подробную информацию по мере необходимости

module Validations
  module Product
    module Mocap
      extend ActiveSupport::Concern

      included do
        with_options if: :product_type_mocap? do |product|
          product.validates :length,
          :frame_rate_type,
          :biped,
          :loopable,
          presence: true
        end

        def product_type_mocap?
          product_type_id == 5
        end
      end
    end
  end
end

1 Ответ

0 голосов
/ 04 сентября 2018

Вы пробовали другой синтаксис? Или, возможно, лямбда для if? например,

with_options presence: true, if: ->(obj) { obj.product_type_mocap? } do 
  validates :length, :frame_rate_type, :biped, :loopable
end

with_options передаст валидатор присутствия каждому элементу, и я считаю, что лямбда-синтаксис работает гораздо более последовательно, чем символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...