我是新手在rails中,並嘗試在mysql中執行左連接。左加入rails/mysql
有兩個對象 - 用戶和消息。
用戶has_and_belongs_to_many消息,消息has_and_belongs_to_many用戶
目前,通過簡單地寫user.messages我獲得以下具有受限==假未連接到任何用戶,但是在查詢控制檯
SELECT * FROM `messages` INNER JOIN `messages_users` ON `messages`.id = `messages_users`.message_id WHERE (`users_messages`.group_id = 1)
消息任何用戶都可以訪問,我需要將收集Message.all(restricted => false)添加到user.messages
將解決我的問題的查詢將是:
select * from messages left join messages_users on messages_users.message_id=messages.id and messages_users.user_id=1 where (messages_users.user_id is NULL and messages.restricted=false) OR (messages_users.user_id=1 and messages.restricted=true);
我如何儘可能優雅地在軌道上寫它?
它會像
Message.find(:all,:conditions => "(messages_users.user_id is NULL and messages.restricted=false) OR (messages_users.user_id=1 and messages.restricted=true)", :joins => "left join messages_groups on messages_users.message_id=messages.id and messages_users.user_id=1 ")
,也可以是不便更好?
我使用的鐵軌2.3.2
感謝, 帕維爾
...但不會':include'也做了相關記錄,這似乎並不希望在當前形勢下的迫切負荷。這是我想解決的問題。 – Purplejacket 2011-10-05 20:03:33