Как бы вы отобразили пунктирную ассоциацию, используя ActiveRecord? Есть ли ActiveRecord-способ сделать это? Я хочу, чтобы все уникальные акции были доступны для конкретного товара.
Вот то, о чем я думал, но мне не очень нравится:
Использование пользовательского поиска
class Item < ActiveRecord::Base
has_many :promotions, :finder_sql => "SELECT..FROM promotions..purchase_option_id IN (...)"
end
Грязный и неэффективный, но рубиновый путь
my_item.purchase_options.map(&:promotion).uniq
Прерывание связи PurchaseOption
<-> Promotion
HABTM и создание новой для Item
<-> PromotedPurchaseOption
class Item < ActiveRecord::Base
has_many :promoted_purchase_options
has_many :promotions, :through => :promoted_purchase_options
end
Другие мысли
Не думаю, что будет хорошей идеей использовать именованные области действия или определять новые методы
Это не будет просто работать или будет выполнять неэффективные запросы, если их использовать:
Item.first.promotions.count
Item.first.promotions.available
Promotion.first.items.all