使用 Ruby on Rails,如何实现多态has_many
关系,其中所有者始终是已知的,但关联中的项目将是某种多态(但同质)类型,由所有者中的列指定?例如,假设产品Producer
类has_many
但生产者实例实际上可能有许多自行车、冰棒或鞋带。我可以很容易地让每个产品类(自行车、冰棒等)与生产者有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 表已经有一个“类型”列,它对应于某些产品类别(例如自行车、冰棒等),但我怎样才能让 Rails 让我做类似的事情:
>> bike_producer.products
#=> [Bicycle@123, Bicycle@456, ...]
>> popsicle_producer.products
#=> [Popsicle@321, Popsicle@654, ...]
对不起,如果这是明显的或常见的重复;我很难轻松实现它。