如何在rails中找到左连接

Mat*_*iby 1 ruby join ruby-on-rails ruby-on-rails-3

我有这个

User.joins(:notifications).joins(:company_users).joins(:role_users).where("notifications.id = ? AND role_users.role_id != '1' AND (company_users.company_id = ? OR users.company_id = ?)", notification.id, p.company_id, p.company_id)
Run Code Online (Sandbox Code Playgroud)

=> []

哪个产生这个sql

SELECT `users`.* FROM `users` 
INNER JOIN `subscriptions` ON `users`.`id` = `subscriptions`.`user_id` 
INNER JOIN `notifications` ON `notifications`.`id` = `subscriptions`.`notification_id` 
INNER JOIN `company_users` ON `company_users`.`user_id` = `users`.`id` 
INNER JOIN `role_users` ON `role_users`.`user_id` = `users`.`id` 
WHERE (notifications.id = 1 
AND role_users.role_id != '1' 
AND (company_users.compcany_id = 67 OR users.company_id = 67))
Run Code Online (Sandbox Code Playgroud)

问题是我需要继续加入company_users并且不确定如何在rails中实现

我知道我可以用find_by_sql做到这一点,我听说这不是真的像......任何想法

Mat*_*iby 9

解决了

User.joins(:notifications).joins("LEFT JOIN `company_users` ON `company_users`.`user_id` = `users`.`id`").joins(:role_users).where("notifications.id = ? AND role_users.role_id != '1' AND (company_users.company_id = ? OR users.company_id = ?)", notification.id, p.company_id, p.company_id)
Run Code Online (Sandbox Code Playgroud)