Я использую Pundit в приложении Rails для авторизации. Кажется, я все-таки получаю от этого зависание, но хочу знать, как ограничить действия редактирования или обновления определенным полем.Разрешить пользователю редактировать конкретное поле с помощью Pundit in Rails
Например, пользователь может редактировать свои user.first_name, user.mobile или user.birthday и т. Д., Но не может редактировать их user.role. По сути, моя логика заключается в том, чтобы позволить пользователю редактировать что-либо, что является косметическим, но не функциональным.
Эти поля могут быть изменены только пользователем, у которого есть роль super_admin (которую я установил на user.rb с помощью таких методов, как ниже).
def super_admin?
role == "super admin"
end
def account?
role == "account"
end
def segment?
role == "segment"
end
def sales?
role == "sale"
end
def regional?
role == "regional"
end
def national?
role == "national"
end
def global?
role == "global"
end
Я довольно много есть чистый сланец user_policy.rb
файл, где обновление и изменение действия по умолчанию
def update?
false
end
def edit?
update?
end
Может быть, я имею в виду, совершенно неправильно об этом и нужно просто обернуть user.super_admin? если утверждение вокруг поля роли на странице показа пользователя, но это кажется неправильным, если я использую только эту тактику безопасности.
Не будет ли такой подход быть восприимчивыми к инъекционной форме (где плохой актер может редактировать страницу в браузере, добавить html-код, чтобы добавить роль и отправить свою собственную роль? Safer/Better/Cleaner, чтобы выборочно блокировать добавление атрибута при любых обстоятельствах с помощью помощника Pundit allowed_attributes в сочетании с сильными параметрами Rails. – jpwynn