Я реализовал аутентификацию с помощью Authlogic и авторизацию с помощью Acl9. Теперь я пытаюсь избежать нескольких обращений к базе данных, чтобы проверить, является ли пользователь администратором, сохраняя это в сеансе.Rails - кэширование ACL9 в сеансе
То, что я думал, что этот код должен работать:
class ApplicationController < ActionController::Base
...
helper_method :current_user_session, :current_user, :is_admin
...
private
def is_admin
return current_user_session[:is_admin] if defined?(current_user_session[:is_admin])
current_user_session[:is_admin] = current_user.has_role?(:admin)
end
Так в основном на первый вызов is_admin вспомогательного метода, он должен добавить логическое значение session[:is_admin]
, а затем для любых других вызовов, взять его сессия. Но я получаю эту ошибку:
undefined method `[]=' for #<UserSession: {:unauthorized_record=>"<protected>"}>
И я застрял здесь. Что я делаю не так?