Rails 3: Доступ к родительскому объекту из модели полиморфных рельсов? - PullRequest
0 голосов
/ 06 июля 2011

У меня есть полиморфная ассоциация - "адрес" (принадлежит "адресуемому").

Среди прочего, он обслуживает модель "магазина".

Я пытаюсь добавитьvalidates_presence_of проверки, когда - и только когда - адрес имеет addressable_type "shop", а соответствующий объект "shop" имеет "shop_type = 'commercial'

Проблема в том, что я не могу получить доступ к своему родителю"объект shop "из модели адреса, что означает, что я не могу получить shop_type и, следовательно, не могу установить проверку. Любые предложения о том, как это сделать?

Вот пример того, что я (думаю) хочуЯ не уверен, что это правильное решение, но я подозреваю, что все, что мне нужно, это выяснить вызов "GET_SHOP_TYPE_HERE" ... при условии, что это возможно. Cheers

# 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

1 Ответ

0 голосов
/ 06 июля 2011

Я мог бы неправильно понять, что вам нужно, но я бы попробовал сделать:

validate_presence_of :your_attribute, :if => has_condition?

def has_condition?
  # whatever code that tells you to validate or not
end

Надеюсь, это поможет!

...