У меня есть модель пользователя, на которой я использую устройство и канканкан. Вот моя способность:
if user.role? :patient
can :access_profile, User, :id => user.id
end
где псевдоним access_profile:
alias_action :show, :edit, :update, :destroy, :to => :access_profile
В моем user_controller я использую load_and_authorize_resource. Например, когда я пробую «users/4» и current_user.id = 3, я могу туда попасть.
В логах вижу это:
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 4]]
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]]
Rendered users/show.html.erb within layouts/application (0.4ms)
Здесь первый запрос поступает из метода set_user. Я предполагаю, что второй запрос загружает мой ресурс для авторизации. А вот так как current_user.id = 3 и во 2-м запросе я тоже вижу 3, то наверное поэтому я и авторизован. Но я думаю, что id во втором запросе должен быть 4.
Что сделать, чтобы метод load_and_authorize работал корректно.