所以,为了表现,我使用数据库会话。我认为,虽然会话是服务器端,但我也可以在会话中存储常用的对象。所以,我存储了current_user,current_account和current_user权限的序列化版本。这是一个好的设计决定吗?有没有更好的办法?
用户模型掌握了很多权限方法(比如user.can_do_whatever),但是因为我试图提高效率,并且在会话中存储了常见的东西(这可以减少数据库访问) ,是否有意义/违反任何设计标准(在每次请求时)将会话存储在current_user中的实例变量中?
截至目前,我想不出任何替代品。
我听说你不应该这样做(在会话中存储对象),但我不记得理由是什么(除了明显的“事情不同步”问题,这应该很容易足以应对,如果你小心)。我会看看我是否可以再次找到该引用... – 2012-03-22 19:06:23
好吧,从current_user访问的东西如果它们不同步并不重要,导致我从当前用户使用的唯一属性是id ,角色和权限组。所以,如果这些事情发生了变化,要求他们重新登录是不是很好? = \ – NullVoxPopuli 2012-03-22 19:17:08
也许,我可以在我的users_controller的更新方法中检查一些需要重新登录的字段,然后只更新会话数据 – NullVoxPopuli 2012-03-22 19:30:09