在我的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”是一个数组(或者更确切地说是一个关系),没有定义“users”方法。
没有测试,但它应该工作:
您可以使用“:through =&gt;:roles”为用户添加用户关系,然后只需调用permission.users.count