2013-04-19 2 views
0

У меня есть три модели: Пользователи, входящие в Концерты, который принадлежит Регионам. Пользователь прослушивает концерт в регионе. Модель принадлежит отношению к отношениям, установленным соответственно.Rails 3 Наследование модели

В контроллере Concerts, подсчитать количество пользователей, слушающих концерт, как это:

@listeners = @concert.users.count 

Однако я хочу перечислить количество слушателей на концерт на уровне региона. В моем контроллере региона я хочу сделать что-то вроде этого:

@all_listeners = @region.concert.users.count. Количество слушателей каждого концерта в каждом регионе. Я знаю, что этот код неверен, но это общая идея. Любая точка в правильном направлении оценивается.

ответ

0

Добавить has_many :through в ваш класс Region.

class User < ActiveRecord::Base 
    belongs_to :concert 
end 

class Concert < ActiveRecord::Base 
    belongs_to :region 
    has_many :users 
end 

class Region < ActiveRecord::Base 
    has_many :concerts 
    has_many :users, :through => :concerts 
end 

Тогда вы можете рассчитывать пользователей в регионе, так:

@all_listeners = @region.users.count 
+0

спасибо Дуг, что это было. Как бы вы рассчитывали на концерт? @all_listeners = @ region.users.count (params [: id])? – daved82

+0

Первый пример в вашем вопросе имеет подсчет голосов для слушателей. –

+1

Это то, что в конечном итоге работает для меня: @listeners = @ region.users.count (: group =>: concert_id) – daved82

Смежные вопросы