1

私はこれを持っています

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でこれを行うことができることを知っています。

4

2 に答える 2

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)
于 2012-05-23T14:38:15.557 に答える
0

クラス User < ActiveRecord::Base

 has_many :friends, :foreign_key=>"u_from",:class_name=>"Friend"

終わり

class Friend < ActiveRecord::Base

 belongs_to :user

終わり

friends = user.friends.where(:u_req_status=>2).joins("LEFT OUTER JOIN users ON users.u_id = friends.u_to").select("friend_id,u_from,u_to,u_first_name,u_last_name,u_email,u_fbid, u_twtid,u_picture_url,u_quote")

于 2014-07-02T13:24:22.620 に答える