0

这些是我的课程和关系

class User
  has_many :conversation_participants
  has_many :conversations, :through => :conversation_participants
end

class ConversationParticipant
  belongs_to :user
  belongs_to :conversation
end

class Conversation
  has_many :messages
  has_many :conversation_participants
  has_many :users, :through => :conversation_participants
end

因此,当我想在 user_ids 12 和 15 之间创建对话时,我首先要检查这两者之间的对话是否已经存在。所以我需要找到的是:

ConversationParticipants where user_id IN (12, 15) AND “两个 conversationparticipant 行具有相同的对话 id”

我缺乏适当的词语来解释这个查询,但我想每个人都会明白我的意思。“这两个用户之间的对话是否已经存在?”。我既不知道如何在 SQL 和 Rails 中做到这一点,所以任何答案都值得赞赏。

编辑 对话的 id 是未知的。我需要找出这两个 user_id 之间是否存在对话。

谢谢——埃米尔

4

2 回答 2

1
class User
  has_many :conversations
  has_many :conversation_participants
  has_many :joined_conversations, :through => :conversation_participants, :source => :conversation
end

class ConversationParticipant
  belongs_to :user
  belongs_to :conversation
end

class Conversation
  belongs_to :user
  has_many :conversation_participants
  has_many :speakers, :through => :conversation_participants, :source => :user
end
于 2012-04-16T12:15:36.017 回答
0

你可以试试这个

 @result = ConversationParticipants.where("user_id in ? AND conversation_id=?",[1,2,3,4],2)
于 2012-04-16T12:14:16.470 回答