2016-11-21 69 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”工作是一个数组(或更确切地说一个关系),没有定义“用户”方法。

而不必测试它,但它应该工作:

你可以一个用户关系添加到权限与“:通过=>:角色”,然后就打电话permission.users.count