查找具有多个 ActiveRecord HABTM 关联的记录

Posted

技术标签:

【中文标题】查找具有多个 ActiveRecord HABTM 关联的记录【英文标题】:Find records with more than one ActiveRecord HABTM Association 【发布时间】:2008-10-15 02:01:51 【问题描述】:

我有两个模型,由 Has 和 Belongs To Many 连接表连接。让我们将这些模型称为用户和事件。大多数用户有 0 个事件,而很少有一个或多个事件。我想做类似的事情:

User.find(:all, :joins => :events, :conditions => ["'对事件进行计数的东西' > ?"], 0 )

问题是,我不确定如何仅选择具有 1 个或多个关联事件的用户。

【问题讨论】:

【参考方案1】:

我找到了答案:

User.find(:all, :joins => :events, :select => 'DISTINCT `users`.*')

基本上,users.* 将结果集限制为仅 users 表,而 DISTINCT 关键字确保每个用户只返回一次。

【讨论】:

这并不能解决您想要超过 N 个结果,而不仅仅是 1 个结果的问题。除了原始 SQL 之外,任何人都可以提供 AR 方法吗?

以上是关于查找具有多个 ActiveRecord HABTM 关联的记录的主要内容,如果未能解决你的问题,请参考以下文章

是否在 HABTM 关系中的联接表中调用 ActiveRecord 回调?

habtm 多次使用相同的模型

自加入HABTM协会的范围

Rails HABTM 关联:记录未插入连接表

Rails:在 HABTM 关系中将子项从大型记录集添加到父模型的 UI

HABTM 蛋糕 php 查找