mysql - Rails - 具有并属于许多...条件与同一个表的多个连接

标签 mysql ruby-on-rails arel

我有一个与 has_and_belongs_to_many 用户关联的模型对话

class Conversation < ActiveRecord::Base
  has_many :messages
  has_and_belongs_to_many :users
end

我想搜索两个用户关联的对话。

我正在考虑加入用户表两次并使用 AND 条件。我曾尝试使用 AREL,但无法正常工作。

解决方法是在用户对话中使用 & 运算符,例如:

@first_user.conversations & @second_user.conversations
=> Returns conversations that both users are subscribed to.

但这会导致多个 sql 查询,我认为这不是最佳选择。

感谢您的帮助!

最佳答案

Conversation.joins(:users).where('user_id in (?)',[1,2]).group(:id).having('count(user_id) > 1')

关于mysql - Rails - 具有并属于许多...条件与同一个表的多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594021/

相关文章:

php - 在事务中运行多个查询并分别处理输出

mysql - 如何将不同 WHERE 条件下的数据排列到不同的列中?

ruby-on-rails - 如何更改我的 gem 所依赖的 gem 版本?

ruby-on-rails - 如何在 RSpec 中删除 years.ago 隐式引用的日期?

ruby - 来自 Arel::Attributes::Attribute 对象的 SQL 列类型

php - 使用 PHP 从 MySQL 过滤时间和日期数据

php - 如何在 PHP MySQL 中检查每一行的 DATE 和 DATETIME?

ruby-on-rails - 网址中的用户名 - Ruby on Rails

mysql - 在 ActiveRecord 中使用 SQL 函数进行插入/更新

mysql - 改变Rails的belongs_to, has_many默认的Select (Where)语句