-1

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

我觉得offest的数据库列是矫枉过正的。这个偏移量将是 0..n 整数。

4

1 回答 1

1

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

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

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

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

但是,如果偏移量将成为用户偏好,应该在登录会话之间持续存在,那么它确实属于您的用户模型作为数据库列。

于 2009-11-14T17:34:23.760 回答