【问题标题】:Rails query based on HABTM match基于 HABTM 匹配的 Rails 查询
【发布时间】:2016-04-14 23:12:23
【问题描述】:

我正在尝试根据处于 HABTM 关系中的用户查询对话。我有conversationsusersconversations_users 表,需要根据对话中的用户抓取对话。

Conversation 模型包含与 :users 的 HABTM 关系。

我试过这个:

Conversation.includes(:users).where(users: {id: [8,10]})

但它使用 OR 语句,我需要同时要求 8 和 10

【问题讨论】:

  • 我不确定我是否理解这个问题,我看不到你的模型来确保它是正确的,但你应该可以说 Conversation.users 来获取属于它的用户列表到给定的对话。这不起作用,还是会产生错误?
  • 我可以查询每个对话,然后查询每个用户并检查我需要的用户,但这似乎过于密集。

标签: mysql ruby-on-rails ruby-on-rails-3


【解决方案1】:

好的,看来以下内容可以满足我的需要:

user_ids = [8,10]

Conversation.joins(:users)
.where(users: {id: user_ids})
.group("conversations.id")
.having(['COUNT(*) = ?', user_ids.count])

更多详情请参考this答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多