Rails 3.1 ассоциации и подсчета? - PullRequest
0 голосов
/ 13 января 2012

В моем приложении Rails есть две модели: Пользователи и Звонки. Модельные ассоциации установлены следующим образом:

модель пользователя

has_many  :calls

модель вызова

belongs_to  :user

Я пытаюсь вызвать, в макете application.html.erb, количество вызовов, которые имеет текущий пользователь.

В настоящее время я использую следующую строку:

 <%= Call.count %>

Что работает, но, очевидно, он учитывает все звонки, а не только звонки, которые есть у текущего пользователя.

Так что я поменял это на следующее:

<%= current_user.Call.calls.count %>

Я не понимаю, как это сделать. Мне нужно иметь возможность звонить на счет из любого места, чтобы я мог начать работу по подсчету на основе последних 30 дней и т. Д.

Ответы [ 2 ]

1 голос
/ 13 января 2012

Сделайте это:

current_user.calls.count

Вы можете сделать то же самое с любым объектом User:

user = User.find(1)
user.calls.count

Затем вы можете связать больше условий для подсчета на основе даты:

user.calls.where("calls.created_at > ?", 30.days.ago).count
0 голосов
/ 13 января 2012

Вы действительно не хотите помещать вызовы базы данных в представления, вы действительно хотите поместить это в контроллер.Вы будете искать что-то вроде User.find(current_user.id).calls.count, так как тогда будет использоваться ассоциация, которую вы установили, или если вы хотите игнорировать модельное отношение, вы можете сделать Call.where(:user_id => current_user.id).count

.ниже в соответствующий контроллер (в правильном действии), а также для вида.

Контроллер

@count = Call.where(:user_id => current_user.id).count

Вид

<%= @count %>

...