In meiner Rails-App habe ich Benutzer, Rollen und Berechtigungen.Zugriff auf tief verschachtelte Objekte in Rails
Die Verbände sind wie folgt:
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
Wenn Berechtigungen Auflistung möchte ich für die Erlaubnis, die Anzahl der Rollen und Benutzer erhalten.
kann ich tun:
<% @permissions.each do |permission| %>
<%= permission.roles.count %>
<% end %>
Aber wenn ich tun:
<% @permissions.each do |permission| %>
<%= permission.roles.users.count %>
<% end %>
ich einen Fehler, dass users
nicht definiert ist!
In meinem Controller habe ich:
@permissions = Permission.includes(roles: :users)
So sollte auch durch den Benutzer Strang ziehen ...
Sie brauchen Fügen Sie die Zuordnung zum Benutzermodell hinzu, um die Anzahl der Benutzer für diese Berechtigung zu ermitteln –