Ответ 1
Я только что реализовал это в своем проекте. То, что я делал, было похоже на Kleber выше, я определил это в своем приложении/контроллерах/session_controller.rb(переопределив Devise)...
class SessionsController < Devise::SessionsController
protected
def after_sign_in_path_for(resource)
if resource.is_a?(User) && resource.banned?
sign_out resource
flash[:error] = "This account has been suspended for violation of...."
root_path
else
super
end
end
end
И затем я добавил логический столбец для пользователей, названных "banned", поэтому модераторы проверяют флажок при редактировании пользователя в бэкэнд, а логическое значение вернет true.
Но был один изъян... если пользователь уже был зарегистрирован и затем заблокирован, у них все еще был доступ к тому, чтобы делать вещи на сайте (комментарии и т.д.) по крайней мере до истечения срока их сеанса или выхода из системы. Поэтому я сделал это в приложении /controller/application _controller.rb...
class ApplicationController < ActionController::Base
before_filter :banned?
def banned?
if current_user.present? && current_user.banned?
sign_out current_user
flash[:error] = "This account has been suspended...."
root_path
end
end
end
Это автоматически выйдет из системы, если обнаружен запрет. Во всяком случае, не уверен, что все это - "лучший" способ повлиять на все, поскольку я новичок в Rails, но все это работает для меня и надеюсь, что это по крайней мере даст вам хорошее начало.