我应该通过所有关系协会吗?
Should I give all my relations associations through?
为我的表之间的关系提供 :through
关联是否被认为是错误的形式?例如如果我有多个 show
,每个都只有一个表演者,并且我想能够说出 aShow.performer
之类的话,是否有足够的理由建立 :through
协会?建立这个协会有不利的一面吗?
如果您的架构如您所指出的那样简单,我不确定您为什么需要 :through
。相反,你会:
显示:
has_many :performers
表演者:
belongs_to :show
在此设计中,Performer 将 show_id
作为外键,而 Show 将没有指向 Performer 的外键。当你想做一些嵌套的事情时,:through
变得必要:
手指:
`belongs_to :performer`
表演者:
belongs_to :show
has_many: fingers
显示:
has_many :performers
has_many :fingers, through: :performers
这将允许您引用相关表演者的所有手指:Show.first().fingers
,而不必先获得表演者。
实际上,这只是语法糖,可以消除关系中的所有工作。
为我的表之间的关系提供 :through
关联是否被认为是错误的形式?例如如果我有多个 show
,每个都只有一个表演者,并且我想能够说出 aShow.performer
之类的话,是否有足够的理由建立 :through
协会?建立这个协会有不利的一面吗?
如果您的架构如您所指出的那样简单,我不确定您为什么需要 :through
。相反,你会:
显示:
has_many :performers
表演者:
belongs_to :show
在此设计中,Performer 将 show_id
作为外键,而 Show 将没有指向 Performer 的外键。当你想做一些嵌套的事情时,:through
变得必要:
手指:
`belongs_to :performer`
表演者:
belongs_to :show
has_many: fingers
显示:
has_many :performers
has_many :fingers, through: :performers
这将允许您引用相关表演者的所有手指:Show.first().fingers
,而不必先获得表演者。
实际上,这只是语法糖,可以消除关系中的所有工作。