私はdeviseとdeclarative_authorizationを実装しようとしているRails 3アプリを持っています。 declarative_authorizationの重要な部分は、ユーザーモデル内に関数 "role_symbols"が存在することです。 ので、私は役割を実装する方法のため、私のような(のがfooを呼びましょう)の値を追跡するために、ユーザーモデル内でインスタンスメソッドを実装しています:deviseと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
問題は、たとえば、私はコントローラにCURRENT_USERのためにfooの値を設定しようとすると、値がつかないです。
current_user.foo = 99
は成功ですが、別のビュー(またはコントローラ)の値をチェックすると、current_user.fooの値はnilになります。
current_userオブジェクトは、Sessionに保持されているUserオブジェクトではありませんか? もしそうなら、current_userオブジェクト内のインスタンス値を設定するためのロックがありますか?