способ уничтожить дополнительные переменные сеанса в модели? - PullRequest
1 голос
/ 09 августа 2010

У меня есть дополнительные переменные, которые я добавляю в сеанс авторизованных пользователей, например:

session[:current_profile] = extra_id

В настоящее время я уничтожаю их при выходе из системы в контроллере, например:

session[:current_profile] = nil

Я бы хотел очистить это и уничтожить их в модели сеанса в методе after_destroy, например:

def after_destroy
   session[:current_profile] = nil
end

Этот метод сеанса, похоже, не вызывается из моделей. Любая идея, как уничтожить переменную сеанса из модели?

Спасибо!

1 Ответ

2 голосов
/ 09 августа 2010

Вы действительно не должны изменять вещи в пространстве Контроллера из пространства Модели, то есть Модель не должна управлять Контроллером.Модели должны быть в состоянии работать независимо от контроллера, например, в модульных тестах, где нет контроллера.

Хотя вы можете быть в состоянии спорить такого рода вещи с наблюдателем, я не знаю опростой способ сделать это.Вероятно, лучше, чтобы контроллер выполнял все необходимые действия напрямую.

Если вы вставите такой хук after_destroy, у вас будут серьезные побочные эффекты, если, например, пользователь вошел в систему какАдминистратор уничтожает другую учетную запись пользователя, а затем его профиль сеанса внезапно исчезает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...