在一个模型上使用多个has_many关联

时间:2014-11-12 16:03:26

标签: ruby-on-rails associations has-many

我正在铁路应用中工作,公司有很多订单。订单有一个名称就是这样。订单可能包含多个电视节目,广播位置和报纸展示位置,这些表格中的数据不一样,因此必须将它们分开。现在,如果订单has_many radio_placements,它将没有television_spots或newspaper_placements。我的问题是在模型上建立一个has_many关系是不好的做法,即使它不存在?,最好是让公司拥有多个电视节目和电视节目有多个电视节目?因此,公司拥有多个radio_orders和radio_order has_many radio_placements,等等。我认为第一个选项最初是干燥器,但是随着应用程序的增长以及我们对数据的更改,使用第二个策略可能会产生更清晰易懂的代码。

1 个答案:

答案 0 :(得分:0)

拥有一个实际上没有任何模型关联的has_many关联并不是一种不错的做法。真正的问题是radio_placementstelevision_spotsnewspaper_placements应该与哪种对象类型相关联。如果它们实际上应该与Order模型相关,那么将关联放在那里。根据我对您的问题/数据形状的理解,您似乎希望这些关系位于Order模型上。如下所示:

class Company
    has_many :orders
    has_many :television_spots, through: :orders
    has_many :radio_placements, through: :orders
    has_many :newspaper_placements, through: :orders
end

class Order
    has_many :television_spots
    has_many :radio_placements
    has_many :newspaper_placements
end

希望这有帮助。