Используя Ruby on Rails, как я могу получить полиморфное отношение has_many
, когда владелец всегда известен, но элементы в ассоциации будут иметь некоторый полиморфный (но однородный) тип, указанный в столбце владельца ? Например, предположим, что продукты Producer
class has_many
, но экземпляры производителей могут на самом деле иметь много велосипедов, фруктовое мороженое или шнурки. Я легко могу иметь каждый класс продукта (Bicycle, Popsicle и т. Д.) Иметь отношение belongs_to
к производителю, но с учетом экземпляра производителя, как я могу получить коллекцию продуктов, если они имеют различные типы (для экземпляра производителя)?
Рельсовые полиморфные ассоциации позволяют производителям принадлежать ко многим продуктам, но мне нужно, чтобы отношения были наоборот. Например:
class Bicycle < ActiveRecord::Base
belongs_to :producer
end
class Popsicle < ActiveRecord::Base
belongs_to :producer
end
class Producer < ActiveRecord::Base
has_many :products, :polymorphic_column => :type # last part is made-up...
end
Таким образом, в моей таблице Producer уже есть столбец типа, который соответствует некоторому классу продуктов (например, Bicycle, Popsicle и т. Д.), Но как я могу получить Rails, чтобы позволить мне сделать что-то вроде:
>> bike_producer.products
#=> [Bicycle@123, Bicycle@456, ...]
>> popsicle_producer.products
#=> [Popsicle@321, Popsicle@654, ...]
Извините, если это очевидно или обычное повторение; У меня возникают удивительные трудности с легким достижением.