将轨道2计算计算转换为轨道3

时间:2011-02-05 03:01:22

标签: ruby-on-rails ruby-on-rails-3 postgresql

我正在尝试将此rails 2计数转换为rails 3,但我遇到了一些问题

answers.count('user_agents.browser', :joins => :user_agent, :group => 'user_agents.browser', :order => 'COUNT(user_agents.browser) DESC')

那是来自rails 2并且给我一个错误

PGError: ERROR:  column answers.user_agents.browser does not exist
LINE 1: SELECT     COUNT("answers"."user_agents.browser") AS "count_...
                         ^
: SELECT     COUNT("answers"."user_agents.browser") AS "count_user_agents_browser", user_agents.browser AS user_agents_browser FROM       "answers"  INNER JOIN "user_agents" ON "user_agents"."id" = "answers"."user_agent_id" WHERE     (answers.survey_id = 18) GROUP BY  user_agents.browser ORDER BY  COUNT(user_agents.browser) DESC

我试过转换自己,这就像我已经接近了

answers.select('COUNT(user_agents.browser)').joins(:user_agent).group('user_agents.browser').order('COUNT(user_agents.browser) DESC')

但是这仍然无效并且给我这个错误

undefined method `keys' for [#<Answer >, #<Answer >, #<Answer >]:ActiveRecord::Relation

有些背景,我从问题模型中得到了一系列答案,其中包含了很多答案。答案也属于UserAgent模型has_many Answers。我的最终目标是获取一系列答案,并确定每个UserAgent有多少答案。此代码在rails 2中工作。我正在使用Postgresql作为db。

1 个答案:

答案 0 :(得分:0)

我能够弄清楚,事实上我确实认为它更有意义

UserAgent.group(:browser).joins(:answers).merge(answers).count(:browser)

合并非常可怕