2014-06-10 46 views
0

我想借此方法:Rails的Mysql2 ::錯誤:操作數應包含1列(S)

self.spend_on_scholarships_for_african_people = training_programs.scholarships.joins(:participants).where('participants.race' => AFRICAN_RACES).sum('participants.spend') 

現在想把它分成不同的性別。我們在參與者表中捕捉性別。所以我嘗試使用查詢內的活動記錄array conditions這樣做是這樣的:

self.bursary_spend_on_potential_female_employees = training_programs.scholarships.joins(:participants).where('participants.race = ? AND participants.gender = ?', AFRICAN_RACES, 'Female').sum('participants.spend') 
self.bursary_spend_on_potential_male_employees = training_programs.scholarships.joins(:participants).where('participants.race = ? AND participants.gender = ?', AFRICAN_RACES, 'Male').sum('participants.spend') 

,但我不斷收到以下錯誤:

ActiveRecord::StatementInvalid - Mysql2::Error: Operand should contain 1 column(s): SELECT SUM(participants.spend) AS sum_id FROM `training_programs` INNER JOIN `participants` ON `participants`.`training_program_id` = `training_programs`.`id` WHERE `training_programs`.`skills_development_id` IS NULL AND `training_programs`.`skills_development_type` = 'SkillsDevelopment' AND `training_programs`.`scholarship` = 1 AND (participants.race = 'African','Coloured','Indian' AND participants.gender = 'Female'): 

我已經砍了我的查詢,我似乎無法找到我做錯了什麼?

回答

5
participants.race = 'African','Coloured','Indian' 

應該

participants.race IN ('African','Coloured','Indian') 

要獲得SQL結果,改變你建立你的查詢,以類似的方式:

participants.race IN (?) 
+0

zwippie你傳說你!它不會像數組一樣看待它。我感到困惑,因爲它一開始工作正常。非常感謝! – TheLegend

相關問題