2012-04-16 3 views
0

에 대한 두 개의 서로 다른 값이 내 클래스입니다 & 관계내가 user_ids 12과 15 사이의 대화를 만들 때, 내가 먼저 대화 사이에 있는지 확인하려면 같은 some_attribute와 행하지만 USER_ID

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 

찾기 이 두 가지는 이미 존재합니다. IN USER_ID는 (12, 15) 및

내가이 쿼리를 설명하는 적절한 단어를 부족 "모두 conversationparticipant 행이 동일한 대화 ID가"

ConversationParticipants : 그래서 내가 무엇을 찾아야하는 것은 이것이다 그러나 나는 모두가 내가 의미하는 것을 얻을 것이라고 생각한다. "이 두 사용자 간의 대화가 이미 존재합니까?" 나는 SQL이나 Rails에서 그렇게 할 수있는 방법을 모른다.

편집 대화의 ID는 알 수 없습니다. 두 개의 user_id 사이에 대화가있는 경우 을 찾아야합니다.

감사 - 에밀

답변

0

@result = ConversationParticipants.where("user_id in ? AND conversation_id=?",[1,2,3,4],2) 
+0

내 업데이 트를 참조 시도 할 수 있습니다. 대화 ID는 알 수 없습니다. –

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 
+0

belongs_to : 사용자는 대화 테이블에 user_id 열이 있음을 암시합니다. 나는 내 컴퓨터에있을 때 언젠가 오늘 스키마를 추가 할 것이다. –