2016-11-21 104 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