我有一个Rails 3应用程序,我正在尝试实现设计和declarative_authorization。 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对象不仅仅是会话中持久存在的User对象吗? 如果是这样,在current_user对象中设置实例值是否存在锁定?