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)
=> []
產生這個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))
問題是我需要離開加入company_users,不知道如何實現在軌道上
我知道我可以用find_by_sql做到這一點,我聽說這不是真的像軌道....任何想法
你有'has_one:company_user'或'has_many:company_users'關聯嗎? – PinnyM
我解決了它......看看我的答案......並回答你的問題,它是多對多的,儘管company_user – Trace