Использование Ruby on Rails, как я могу достичь полиморфного отношения has_many
, где владелец всегда известен, но элементы в ассоциации будут иметь некоторый полиморфный (но гомогенный) тип, указанный столбцом у владельца? Например, предположим, что продукты Producer
class has_many
, но экземпляры производителей действительно могут иметь много велосипедов, или Popsicles, или Shoelaces. Я могу легко обеспечить, чтобы каждый класс продукта (Bicycle, Popsicle и т.д.) Имел отношение belongs_to
к Продюсеру, но дал экземпляр производителя, как я могу получить коллекцию продуктов, если они имеют разные типы (для экземпляра производителя)?
Полиморфные ассоциации Rails позволяют производителям относиться ко многим продуктам, но мне нужно, чтобы отношения были наоборот. Например:
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
#=> [[email protected], [email protected], ...]
>> popsicle_producer.products
#=> [[email protected], [email protected], ...]
Извините, если это очевидно или общее повторение; У меня есть удивительное затруднение в достижении этого легко.