Традиционные методы управления рельсами направлены на сокращение логического кода в контроллерах, поскольку они спроектированы для маршрутизации и выполнения сложных задач.Rails 4: можно ли извлечь сложную логику аутентификации из контроллера?
Однако, если у вас есть полукомплексная логика аутентификации, как вы можете разумно извлечь эту логику из контроллера?
Следующее представляется мне довольно «стандартной» логикой для любого базового приложения. Хотя логика напрямую связана с «маршрутизацией», кажется, что я ввожу логику в контроллер, и она не очень маленькая ... Я собираюсь перехитрить здесь?
Можно ли легко извлечь эту логику в отдельный класс, поскольку метод redirect_to ...
доступен только в контроллерах?
class SessionsController < ApplicationController
# Login page POSTs here to perform authentication logic
def create
user = User.find_by(email: params[:email])
if user and user.authenticate(params[:password]) # default has_secure_password
if user.confirmed?
if user.account.active?
flash[:notice] = "Successfully logged in"
redirect_to root_path
else
flash[:error] = "This account is no longer active"
redirect_to inactive_account_path(user.account)
end
else
flash[:alert] = "You are not confirmed yet"
redirect_to confirmation_path(user.confirmation_token)
end
else
flash[:error] = "Invalid email or password"
redirect_to login_path
end
end
end