我有一個Rails 3應用程序,我試圖實現設計和declarative_authorization。 declarative_authorization的一個重要部分是在用戶模型中存在一個函數「role_symbols」。 因爲我實現了角色的樣子,我實現了用戶模型中的實例方法,以保持一個值的軌跡(讓我們調用foo)這樣:設計和current_user
attr_accessor :foo
def foo=(val)
@foo = val
end
def foo
@foo
end
然後,我們將使用內部的foo的值role_symbols方法來限制的有效角色,也許是這樣的:
def role_symbols
roles.where("foo = ?", @foo).name.underscore.to_sym
end
的問題是,當我嘗試設置foo的值,在控制器的CURRENT_USER,價值不沾,例如:
current_user.foo = 99
是成功的,但是當我檢查另一個視圖(或控制器)中的值時,current_user.foo的值爲零。
是不是current_user對象只是一個持久化在會話中的用戶對象? 如果是這樣,在current_user對象內設置實例值是否存在一些鎖定?