1

Rails 3 或 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_CONCATs 都被忽略并且信息不在结果中。这是此问题的简化版本,尚未得到解答。

我在某个地方读到了你应该使用.cacluate的地方,但这给了我一个错误。

是什么赋予了?

4

2 回答 2

0

我想我后来读到这不受支持,因为 AR 无法知道您正在使用哪种数据库技术,因此某些功能不可用,而且显然GROUP_CONCAT并非所有 SQL 技术都可以使用。

于 2015-08-30T08:29:32.587 回答
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>

它在 ActiveRecord 结果中没有“dpid”或只有 GROUP_CONCAT(dates_project_id) 的迹象,而您可以将其用作fpn.dpid

我被 ActiveRecord 结果愚弄了十分钟而没有尝试打印。

于 2015-08-28T18:24:55.410 回答