2013-11-22 6 views
5

私は主なアプリケーションと管理アプリケーションを持つPadrinoアプリケーションで作業しています。セッションを介してユーザのログインは、私は彼をログに記録するように次の2行を実行すると。Padrinoのモデルでcurrent_accountにアクセスするにはどうすればよいですか?

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

デバッガを使用して任意のモデル

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 
#<Account @id=1 @name="John" @surname="Davies" @email="[email protected]" @crypted_password="3456789" @role="admin"> 

で任意のコントローラに

私はcurrent_accountにアクセスしてAdminアプリケーションにログインしているユーザーを確認できますが、この変数はメインアプリでアクセスできません。

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

私は解決策を探して、提案に出くわしています

アプリで/ app.rb

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

adminに/ app.rb

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

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

それは動作しませんでした私のために。私のモデルでcurrent_accountにアクセスする方法はありますか?

ご案内ありがとうございます。

答えて

3

私はあなたがやろうとしているかを正確にわからないんだけど、私はこのような同様の問題解決:

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

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

をし、それをアクセスするためにAccount.currentを使用しています。

関連する問題