将表格之间的关系称为:through
关联,这被认为是不好的形式吗?例如如果我有多个show
,其中每个只有一个表演者,并且我想能够说出类似aShow.performer
的内容,那么是否有足够的理由建立:through
关联?建立这种关联是否存在缺陷?
答案 0 :(得分:1)
如果您的架构如您所指示的那样简单,我不确定您为什么需要: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
,而不是必须首先获得表演者。
实际上,这只是从关系中取出所有工作的语法糖。