я внедряю права администратора для пользователей. После их редактирования я хотел бы показать таблицу с разрешениями пользователя для каждого действия. Как на следующей картинке:
Но проблема в том, что отображаются только разрешения текущего пользователя. Как передать пользователя, которого я хочу показать?
Часть кода:
ApplicationPolicy
class ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
@user = user
@record = record
end
def index?
false
end
def show?
scope.where(:id => record.id).exists?
end
def create?
false
end
def new?
create?
end
def update?
false
end
def edit?
update?
end
def destroy?
false
end
def scope
Pundit.policy_scope!(user, record.class)
end
class Scope
attr_reader :user, :scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
scope
end
end
end
Действие контроллера
def show
authorize @user
end
Просмотр
<table class="table">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">Index</th>
<th scope="col">Show</th>
<th scope="col">New</th>
<th scope="col">Edit</th>
<th scope="col">Delete</th>
<th scope="col">Report</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Cars</th>
<% %>
<td><span class="glyphicon glyphicon-<%= policy(Car).index? ? "ok text-success" : "remove text-danger"%>"></span></td>
<td><span class="glyphicon glyphicon-<%= policy(Car.first).show? ? "ok text-success" : "remove text-danger"%>"></span></td>
<td><span class="glyphicon glyphicon-<%= policy(Car).new? ? "ok text-success" : "remove text-danger"%>"></span></td>
<td><span class="glyphicon glyphicon-<%= policy(Car.new).edit? ? "ok text-success" : "remove text-danger"%>"></span></td>
<td><span class="glyphicon glyphicon-remove text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove text-danger"></span></td>
</tr>
<tr>
<th scope="row">Animals</th>
<td><span class="glyphicon glyphicon-ok text-success"></span></td>
<td><span class="glyphicon glyphicon-ok text-success"></span></td>
<td><span class="glyphicon glyphicon-remove text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove text-danger"></span></td>
<td><span class="glyphicon glyphicon-ok text-success"></span></td>
</tr>
</tbody>
</table>
Как видите, в строке "policy (Car)" я так и думал реализовать.