0

我有一个 Rails 3 应用程序,我正在尝试实现设计和声明授权。declarative_authorization 的一个重要部分是用户模型中存在“role_symbols”函数。由于我实现角色的方式,我在 User 模型中实现了一个实例方法来跟踪一个值(我们称之为 foo),如下所示:

  attr_accessor :foo

  def foo=(val)
    @foo = val
  end

  def foo
    @foo
  end

然后我们将在 role_symbols 方法中使用 foo 的值来限制有效角色,可能是这样的:

def role_symbols
  roles.where("foo = ?", @foo).name.underscore.to_sym
end

问题是当我尝试在控制器中为 current_user 设置 foo 的值时,该值不会保持不变,例如:

current_user.foo = 99

是成功的,但是当我检查另一个视图(或控制器)中的值时,current_user.foo 的值是 nil。

current_user 对象不只是一个持久化在 Session 中的 User 对象吗?如果是这样,在 current_user 对象中设置实例值是否有一些锁定?

4

1 回答 1

0

有幸在这里找到答案:

https://web.archive.org/web/20140113211231/http://blog.drivingthevortex.nl/2010/01/24/using-declarative_authorization-with-subdomains/

于 2010-12-21T02:37:27.417 回答