У меня полиморфная ассоциация - "адрес" (относится к "адресуемым").
Среди прочего, он обслуживает «магазинную» модель.
Я пытаюсь добавить проверку validates_presence_of, когда и только тогда, когда адрес имеет addressable_type "shop", а соответствующий объект "shop" имеет "shop_type = 'commercial'
Проблема в том, что я не могу получить доступ к моему родительскому объекту «магазин» из модели адреса, что означает, что я не могу получить shop_type и, следовательно, не могу установить проверку. Любые предложения о том, как это сделать?
Вот пример того, что я (думаю) хочу делать. Я не уверен, что это правильное решение, но я подозреваю, что все, что мне нужно, это выяснить вызов "GET_SHOP_TYPE_HERE"... предполагая, что это возможно. Ваше здоровье
# app/models/address.rb
with_options :if => lambda { |address| address.addressable_type == 'Shop')} do |model|
model.validates_presence_of :street_address, :suburb, :post_code, :address_state, :latitude, :longitude unless is_commercial_shop?
end
def is_commercial_shop?
<GET_SHOP_TYPE_HERE> == 'commercial'
end