ruby on rails方式来销毁模型中的额外会话变量?

时间:2010-08-09 18:36:12

标签: ruby-on-rails

我在authlogic用户会话中添加了其他变量,如:

session[:current_profile] = extra_id

我目前在一个控制器中注销时销毁这些:

session[:current_profile] = nil

我想清理它并在after_destroy方法中的会话模型中销毁它们,如:

def after_destroy
   session[:current_profile] = nil
end

此会话方法似乎不能从模型中调用。知道如何从模型中销毁会话变量吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

你真的不应该从Model空间改变Controller空间中的东西,也就是说,Model不应该控制Controller。模型应该能够独立于控制器运行,例如在没有控制器的单元测试中。

虽然你可能能够使用观察者来解决这种问题,但我不知道一种简单的方法。让控制器直接执行所有必需的操作可能会更好。

如果您将这样的after_destroy挂钩放入其中,则会产生一些严重的副作用,例如,如果以管理员身份登录的用户会破坏其他用户帐户,那么他们的会话配置文件会突然消失。