1

Rails 3 または Padrino の ActiveRecord はGROUP_CONCAT、 a 内を無視してい.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が無視され、情報は結果に含まれません。これは、回答されていないこの質問の簡略化されたバージョンです。

これに使用する必要がある場所を読み.cacluateましたが、エラーが発生します。

何を与える?

4

2 に答える 2

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>

fpn.dpid として使用できるのに対し、ActiveRecordの結果には「dpid」の兆候がなく、単に GROUP_CONCAT(dates_project_id)でした。

印刷しようとせずに、ActiveRecord の結果に 10 分間だまされました。

于 2015-08-28T18:24:55.410 に答える
0

AR はどの DB テクノロジを使用しているかを知る方法がないため、これがサポートされていないことを後で読んだと思います。そのため、一部の機能は利用できず、明らかGROUP_CONCATにすべての SQL 技術者が利用できるわけではありません。

于 2015-08-30T08:29:32.587 に答える