2013-11-22 4 views
5

저는 주 앱과 관리 앱이있는 Padrino 애플리케이션에서 작업하고 있습니다. 세션을 통해 사용자의 로그인, 나는 그냥 실행하면 두 줄을 다음은 그를 로그인합니다. 디버거와Padrino의 모델에서 current_account에 액세스하는 방법은 무엇입니까?

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

을 어떤 컨트롤러에서 관리

current_account 
#<Account @id=1 @name="John" @surname="Davies" @email="[email protected]" @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 변수에 액세스해야합니다.

내가 솔루션을 검색하고, 제안 건너 온 한 :

응용 프로그램에서/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를 사용합니다.