2012-11-08 72 views
1

Rails 3中的ActiveRecord或Padrino在.select內忽略GROUP_CONCATRails和Padrino ActiveRecord忽略GROUP_CONCAT中的.select

我試圖找出爲什麼AcitveRecord是忽略這個查詢:

Dvd.includes(:dvd_director, :dvd_producer). 
     select(" 
     GROUP_CONCAT(DISTINCT dvd_director.director SEPARATOR ', ') AS director 
     , GROUP_CONCAT(DISTINCT dvd_producer.producer SEPARATOR ', ') AS producer 
     ... 
     .where("id = 4") 

的查詢被執行,但所有的GROUP_CONCAT小號都被忽略,而其中的信息是不是在結果中。這是this question的簡化版本,尚未得到解答。

我在某處讀到這個,應該使用.cacluate,但是這給了我一個錯誤。

什麼給?

回答

0

軌道4

我也有類似的問題,我的查詢:

@project 
.fields_numbers_projects 
.select("*, GROUP_CONCAT(fields_numbers_projects.dates_project_id) AS dpid") 
.group(:group_id) 
.each do |fpn| 

而且ActiveRecord的結果是:

<#FieldsNumbersProject 
id: 1, group_id: 1, project_id: 1, dates_project_id: 1, fields_project_id: 1, employee_id: nil> 
<#FieldsNumbersProject 
id: 1, group_id: 2, project_id: 1, dates_project_id: 1, fields_project_id: 1, employee_id: nil> 

它沒有跡象 「DPID」 或只是GROUP_CONCAT(dates_project_id)在ActiveRecord結果中,而您可以使用它作爲fpn.dpid

我被ActiveRecord結果愚弄了10分鐘而未嘗試打印。

+0

我想我以後會讀到這個不支持,因爲AR無法知道您正在使用哪種數據庫技術,所以有些功能無法使用。 – kakubei

0

我想後來我知道這不被支持,因爲AR無法知道您正在使用哪種數據庫技術,所以有些功能不可用,並且顯然GROUP_CONCAT不適用於所有SQL技術。