Преобразование подсчета рельсов 2 в рельсы 3 - PullRequest
0 голосов
/ 05 февраля 2011

Я пытаюсь преобразовать этот подсчет рельсов 2 в рельсы 3, но у меня возникают некоторые проблемы

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

То есть с рельсов 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

Некоторое предыстория, я получаю массив ответов от моей модели вопросов, которая имеет has_many Ответы. Ответы также принадлежат модели UserAgent, которая имеет ответы. Моя конечная цель - взять массив ответов и выяснить, сколько пришло от каждого UserAgent. Этот код работает в rails 2. Я использую Postgresql для БД.

1 Ответ

0 голосов
/ 06 февраля 2011

Я смог понять это, и на самом деле я думаю, что это имеет гораздо больше смысла

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

Слияние чертовски здорово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...