5

メインアプリと管理アプリを持つ Padrino アプリケーションに取り組んでいます。ユーザーがセッション経由でログインするときは、次の 2 行を実行してログインします。

account = Account.authenticate(params[:email], params[:password])
set_current_account(account)

管理者の任意のコントローラーでデバッガーを使用

current_account
#<Account @id=1 @name="John" @surname="Davies" @email="john.davies@gmail.com" @crypted_password="3456789" @role="admin">

全機種デバッガ付き

current_account
*** NameError Exception: undefined local variable or method `current_account' for #<Post @id=1 @question="Why is this not working?" @answer="I have no idea">

どのユーザーが管理アプリにログインしているかを調べるために current_account にアクセスできますが、この変数はメイン アプリではアクセスできません。

私がやろうとしているのは、すべてのモデルに対してアクティビティ フィード (監査証跡) を作成しているため、モデルでレコードが作成/更新/破棄されると、モデル アクティビティで新しいレコードが作成されることです。そうは言っても、モデルの current_account 変数にアクセスする必要があります。

解決策を探したところ、次のような提案がありました。

admin/app.rb 内

enable  :sessions
set :session_id, "my-global-session"

app/app.rb 内

register Padrino::Admin::AccessControl
register Padrino::Admin::Helpers

enable :sessions
set :session_id, "my-global-session"

私にはうまくいきませんでした。モデルで current_account にアクセスする方法はありますか?

ガイドや提案をありがとう。

4

1 に答える 1

3

何をしようとしているのか正確にはわかりませんが、次のような同様の問題を解決しました。

class Account
  # ...
  class << self
    attr_accessor :current
  end
  # ...
end

class Admin < Padrino::Application
  #...
  before do
    Account.current = current_account
  end
  # ...
end

そして、 を使用Account.currentしてアクセスします。

于 2013-11-23T04:46:32.980 に答える