В настоящее время я изменяю, как работает мой интерфейс ActiveAdmin, так что он объединяет как элементы attr_accessible
, так и CanCan. В некоторых из моих моделей у меня есть определенное действие контроллера для кнопки Submit на форме, такие какИспользование кнопки ActiveAdmin Submit в отношении attr_accessible
= f.actions do
= f.action :submit, label: 'Update Password'
И в этом Update Password
метода, который я нахожусь в состоянии сделать update_attributes(*,as: @admin_user.role.name.to_sym)
где @admin_user
является текущим пользователем администратора. Это позволяет только администраторам с разрешенной ролью обновлять свой пароль.
У меня есть проблема, когда ActiveAdmin делает родовое обновление, в частности
=f.action :submit
Как я могу передать параметры ActiveAdmin так, что, когда он делает обновление будет использовать указанную роль? Я знаю, что кнопки используют Formtasti, и что метод :label
является частью этого, но я не могу найти ничего об использовании других опций.
Один из вариантов для меня - написать переопределение для метода редактирования в каждой из моих моделей, но этот вид поражает цель ActiveAdmin, не так ли?
Теперь мои способности CanCan уже установлены так, что только определенные роли могут получить доступ к определенным элементам. Означает ли это переопределение элементов attr_accessible
? Я знаю, что если элемент неattr_accessible
, даже если он управляемый в CanCan, не будет изменен посредством массового присвоения.
Мне действительно нужно знать, что если бы я был хакером, мог ли я ввести update_attributes(params[:whatever], as: :admin)
, и он заблокировал бы его из-за способности CanCan? Стоит ли защищать оба предмета с помощью attr_accessible
и класса способности CanCan?