Преобразование sql-запроса в rails activerecord - PullRequest
2 голосов
/ 01 апреля 2011

У меня простая проблема.Я не могу выяснить, эквивалентные рельсы для этого запроса SQL:

select COUNT(description) from reports where user_id = current_user;

На самом деле я хочу подсчитать общее количество нет.отчетов, опубликованных конкретным пользователем при входе в его аккаунт, а не всех отчетов, опубликованных всеми пользователями.Я также не могу понять, как передать user_id текущего пользователя, вошедшего в систему, чтобы получить требуемый результат.Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Что-то вроде:

current_user.reports.count
1 голос
/ 01 апреля 2011

In Rails 2

Если вы определили has_many :reports в модели пользователя.

count = current_user.reports.first(:select => "COUNT(description) as count").count

Если has_many не определено в модели,

count = Report.first(:select => "COUNT(description) as count",
             :conditions => {:user_id => current_user.id}).count

Но current_user.reports.select{ |report| report.description }.count достаточно, хотя он производит другой запрос.(Select * from reports where ..) и затем возьмите счетчик массива.

Но в Rails 3 это довольно просто.

Если вы определили has_many :reports в модели пользователя.

count = current_user.reports.count(:description)

в противном случае

count = Report.where(:user_id => current_user.id).count(:description)

См. Руководство по Rails для расчета Rails 3 ARзапросы.

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