2016-02-08 4 views
1

У меня есть файл рейка, и у меня есть этот код на нем. ,Convert Inner Join to Left Присоединиться к rails

if circle[:conference2_total_channels].present? 
       conf = Confbridge.find(:all, :conditions => ["confbridges.cid = ?",circle.circle_number], 
       :joins => [:confbridge_participants], 
       :select => 'confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant') 

      end 

возвращение кода

SELECT confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant FROM `confbridges` **INNER JOIN** `confbridge_participants` ON `confbridge_participants`.`confbridge_id` = `confbridges`.`id` WHERE (confbridges.cid = '0090000092') 

это INNER JOIN

как я могу изменить его LEFT JOIN

как это

SELECT confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant FROM `confbridges` **LEFT JOIN** `confbridge_participants` ON `confbridge_participants`.`confbridge_id` = `confbridges`.`id` WHERE (confbridges.cid = '0090000092') 

СПАСИБО :)

+0

Какую версию рельсов вы используете? Этот синтаксис устарел где-то в третьем – Vasfed

+0

Похоже, вы используете очень старую версию Rails. Не так ли? – Pavan

+0

Возможный дубликат [Как сделать левое соединение в поисках рельсов] (http://stackoverflow.com/questions/10722106/how-do-i-do-a-left-join-in-a-rails- найти) –

ответ

0

Это, как я хотел бы написать это:

Confbridge.where("confbridges.cid = ?",circle.circle_number) 
    .joins("LEFT JOIN confbridge_participants 
     ON confbridge_participants.confbridge_id = confbridges.id") 
    .select(...your select statement) 
+0

определенно работает. Я надеялся лично, что будет синтаксис в строках '.joins (: left, [: my,: association])' – jaydel