我和Foo,Bar和Zork之间有关系。
Zork和Foo是相关的,但为了便于使用,他们通过与Bar' Bar'相反,创建一个多对多的关系。
(即每个酒吧都有很多Foos,每个Foo可以有很多酒吧。每个酒吧都可以分配给很多Zorks,每个Zork可以分配很多酒吧。所以Foo HABTM酒吧和酒吧HABTM Zork)
活跃记录是否支持此类关系?我不得不亲自编写一个查询来处理让Foo属于Zork所需的右连接,但结果有点脆弱。例如,' distcint id'当你.count结果时,查询的一部分会被删除,这是次优的。我可以通过使用count(" Distinct id")来解决这个问题,但这对于潜在的问题感觉就像是一个笨拙的解决方案 - 它打破了我用来规范化我的代码以进行分页的各种辅助方法。 / p>
答案 0 :(得分:0)
听起来你可能正在寻找has_many:through关系? 来自文档:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
has_many:through关联对于通过嵌套的has_many关联设置“快捷方式”也很有用。例如,如果文档有许多部分,并且部分有许多段落,您有时可能希望获得文档中所有段落的简单集合。你可以这样设置:
class Document < ActiveRecord::Base
has_many :sections
has_many :paragraphs, through: :sections
end
class Section < ActiveRecord::Base
belongs_to :document
has_many :paragraphs
end
class Paragraph < ActiveRecord::Base
belongs_to :section
end
通过:::指定的部分,Rails现在将理解:
@document.paragraphs