ruby on rails:将current_user的数据存储在不同的模型上

时间:2009-11-14 13:46:39

标签: ruby-on-rails activerecord restful-authentication

我正在尝试使用attr_accessor:offset将来自current_user的数据存储在User模型中。我想使用存储在current_user模型中的偏移来获取不同模型的记录。当我从不同的模型更改此偏移时,它不会保存它吗?

我感觉有一个数据库列的offest是矫枉过正。该偏移量为0..n整数。

1 个答案:

答案 0 :(得分:1)

假设我正确地理解了你的问题:

数据库列实际上是数据在重新加载之后在模型中保留的唯一方法。 current_user变量通过将其存储在控制器和视图的会话中来解决此问题。无论你在哪里尝试使用current_user,我都觉得你的问题源于current_user从一个请求传递到下一个请求的方法,你对current_user所做的任何更改都不会转移到下一个请求。

current_user id在登录时存储在会话哈希中。第一次调用current_user作为控制器操作的一部分时,authenticated_system模块根据会话哈希中的id找到User。这意味着您对current_user所做的任何更改都将丢失,除非您在控制器操作完成之前保存它。数据库列是唯一的方法。

但是,您可以完全忽略当前用户,并使用session[:offset] = offset向会话哈希添加偏移量。在控制器/视图中以相同的方式引用它。只要您的用户没有结束他们的浏览会话,session[:offset]就会返回您要保留的偏移值。

但是,如果offset将是一个应该在登录会话之间保持的用户首选项,那么它确实属于您的用户模型中作为数据库列。