0

deviseとdeclarative_authorizationを実装しようとしているRails3アプリがあります。declarative_authorizationの重要な部分は、ユーザーモデル内に関数「role_symbols」が存在することです。ロールを実装する方法のために、ユーザーモデル内にインスタンスメソッドを実装して、値を追跡します(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オブジェクト内のインスタンス値の設定にいくつかのロックがありますか?

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 に答える