2016-11-21 7 views
0

В моем приложении Rails у меня есть пользователи, роли и разрешения.Доступ к глубоким вложенным объектам в Rails

Ассоциации являются:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :roles, :join_table => 'users_roles' 
end 

class Role < ActiveRecord::Base 
    has_and_belongs_to_many :users, :join_table => 'users_roles' 
    has_and_belongs_to_many :permissions, :join_table => 'roles_permissions' 
end 

class Permission < ActiveRecord::Base 
    has_and_belongs_to_many :roles, :join_table => 'roles_permissions' 
end 

При перечислении разрешения я хочу, чтобы получить количество ролей и пользователей для этого разрешения.

я могу сделать:

<% @permissions.each do |permission| %> 
    <%= permission.roles.count %> 
<% end %> 

Но если я:

<% @permissions.each do |permission| %> 
    <%= permission.roles.users.count %> 
<% end %> 

Я получаю сообщение об ошибке, что users не определен!

В мой контроллер у меня есть:

@permissions = Permission.includes(roles: :users) 

Так должно быть протаскивания пользователей, а также ...

+0

вам нужно добавить ассоциацию с пользовательской моделью в заказы, чтобы получить количество пользователей за это разрешение –

ответ

0

Это не может работать, потому что ваши «permission.roles» является массивом (или, точнее, a Relation), не существует метода «users».

Не имея его испытания, но он должен работать:

Вы можете добавить отношение пользователей к разрешению с «: через =>: роли», а затем просто позвонить permission.users.count

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

  • Нет связанных вопросов^_^