Это моя упрощенная ситуация:
class Producer
has_and_belongs_to_many :rules
end
class Rule
has_and_belongs_to_many :producers
end
Но Rule
следует структуре STI. Итак, у меня есть это:
class Producer
has_and_belongs_to_many :rules
has_and_belongs_to_many :product_rules, join_table: :producers_rules,
association_foreign_key: :rule_id
has_and_belongs_to_many :fee_rules, join_table: :producers_rules
association_foreign_key: :rule_id
end
class Rule
has_and_belongs_to_many :producers
end
class ProductRule < Rule
end
class FeeRule < Rule
end
Ничего страшного, работает нормально. Итак, теперь я хочу создать область, которая возвращает только Producers
, связанные с ProductRules
.
Что-то эквивалентное этому:
Producer.all.select{|x| x.product_rules.any? }
Может ли кто-нибудь указать быстрое решение?
ПРИМЕЧАНИЕ. Я, очевидно, не хочу загружать всех производителей и выбирать их позже, я хочу напрямую загружать только нужные.
ОБНОВИТЬ
Я использую Rails версии 2.3.15