目前我有Conversation has many Messages
的關係,和User has many Conversations
的關係。如何將限制/訂單條件應用於ActiveRecord加入?
我想創建一個ActiveRecord查詢來獲得每個對話的最後一條消息用戶有。
比方說,我的談話中數組IDS ...
ids = [24, 22, 23]
這個查詢:
Message.where(conversation_id: ids).joins(:conversation).order(created_at: :desc)
...是正確的術語,它返回所有跨消息所有用戶的談話。
使用上述的相同的查詢,如果我映射conversation_id
組成的數組:
Message.where(conversation_id: ids).joins(:conversation).order(created_at: :desc).map(&:conversation_id)
我得到這樣的數組:[24, 24, 22, 22, 23, 22]
,告訴我有與conversation_id = 22,2會話3個消息會話標識= 24的消息1,會話標識= 23的消息。
這很好,但現在我的問題現在是,如何創建一個ActiveRecord查詢以從每個對話中獲取一條消息? (最後一個被創建)
我假設我必須使用limit()
/order()
方法,但我不知道該怎麼做,這對我來說有點太高級了。
感謝您的提前幫助。
快速的問題,這是否解決方案適用,如果我想要檢索的N最後一個記錄? – jlstr
說實話,我的頭頂我不確定你會怎麼做 –
謝謝你的回答。看起來這個問題並不是一個簡單的解決方案,至少沒有一個不依賴於將SQL寫入/嵌入到Ruby中的方法,這很不幸。 – jlstr