我正在开发一个 Rails 3 应用程序,它(为了这个问题)通过关联Posts
链接到多个Categories
,反之亦然has_and_belongs_to_many
:
Post < ActiveRecord::Base
has_and_belongs_to_many :categories
end
Category < ActiveRecord::Base
has_and_belongs_to_many :posts
end
我试图弄清楚如何编写一个 ActiveRecord(或 ARel)查找器来检索每个Post 链接到两个的所有Posts
位置。我了解我最终要生成的 SQL(两个带有别名的 INNER JOINS 以便能够区分每一个以匹配两者),但到目前为止我还没有找到创建查询的方法诉诸原始 SQL 位。Categories
Categories
在这种情况下,避免自定义 SQL 如此重要的原因是,我正在编写的代码是通用的并且是大量数据驱动的,并且它需要与Post
对象查询中的其他过滤(和排序)限定符混合,所以我可以'不仅仅是硬编码方法调用Post
(例如访问 的集合Categories
)或自定义 SQL,它们可能无法与其他过滤器生成的 SQL 很好地混合。
has_many :through
如果以某种方式使事情变得更容易,或者甚至查看其他 ORM 选项(DataMapper、Mongoid 等),我愿意切换到使用连接模型(.
我很惊讶这在 ActiveRecord/ARel 中并不容易/更明显,但也许我只是不知道要搜索以找到答案的神奇关键字。ARel 的文档也非常少,所以我很茫然。任何帮助将非常感激!