저는 Gmail에서 대화를 쿼리하는 방법에 대해 생각 해왔습니다. 다른 기술을 사용하고 있다는 것을 알고 있지만 최선을 다해 모방하고 싶습니다.레일 3은 관계에서 특정 행에만 합류합니다.
현재 대화 목록을 가져 와서 각 대화마다 메시지를 가져와야합니다. 일반 가입을 사용할 수 있습니다.
Conversation.joins(:messages).first
하지만 모든 메시지가 하나씩 들어갑니다. 마지막 메시지 만 필요합니다. 이 쿼리를 어떻게 구성합니까? 내가 대화 내용을 수행 할 때 더 나은 가입하는 것입니다 :
Conversation.joins(:messages).all # but only join last message for each conversation
는 또한, 내가 특정 사용자 ID와 마지막 메시지를 가입 조건을 사용할 수
?message.user_id = 1
Conversation.joins(:messages).all # only last message where user_id = 1
쿼리를 시연 할 때 도움이된다면 squeel을 사용하고 있습니다.
대화를 가져 오는 가장 최적의 방법과 각 대화의 마지막 메시지는 무엇입니까?
고마워요! 그것은 크게 도움이 될 것입니다! –