我在authlogic用户会话中添加了其他变量,如:
session[:current_profile] = extra_id
我目前在一个控制器中注销时销毁这些:
session[:current_profile] = nil
我想清理它并在after_destroy方法中的会话模型中销毁它们,如:
def after_destroy
session[:current_profile] = nil
end
此会话方法似乎不能从模型中调用。知道如何从模型中销毁会话变量吗?
谢谢!
答案 0 :(得分:2)
你真的不应该从Model空间改变Controller空间中的东西,也就是说,Model不应该控制Controller。模型应该能够独立于控制器运行,例如在没有控制器的单元测试中。
虽然你可能能够使用观察者来解决这种问题,但我不知道一种简单的方法。让控制器直接执行所有必需的操作可能会更好。
如果您将这样的after_destroy
挂钩放入其中,则会产生一些严重的副作用,例如,如果以管理员身份登录的用户会破坏其他用户帐户,那么他们的会话配置文件会突然消失。