2013-11-22 16 views
5

Tôi đang làm việc trên ứng dụng Padrino có Ứng dụng chính và ứng dụng Quản trị. Khi một thông tin đăng nhập người dùng thông qua phiên, tôi chỉ cần chạy sau hai dòng để đăng nhập anh trong.Cách truy cập current_account trong các mô hình ở Padrino?

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

Với debugger trong bất kỳ bộ điều khiển trong Admin

current_account 
#<Account @id=1 @name="John" @surname="Davies" @email="[email protected]" @crypted_password="3456789" @role="admin"> 

Với debugger trong bất kỳ mô hình

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"> 

Tôi có thể truy cập current_account để tìm hiểu người dùng nào đã đăng nhập trong ứng dụng Quản trị, nhưng biến này không thể truy cập được trong Ứng dụng chính.

Điều tôi đang cố gắng là tôi tạo Nguồn cấp dữ liệu hoạt động hoặc Đường dẫn kiểm tra cho tất cả các mô hình của mình, vì vậy khi một bản ghi được tạo/cập nhật/hủy trong bất kỳ mô hình nào, bản ghi mới sẽ được tạo trong Hoạt động mô hình . Điều đó đang được nói, tôi cần truy cập biến current_account trong các mô hình của tôi.

Tôi đã tìm kiếm các giải pháp, và đã xem qua một gợi ý:

Trong admin/app.rb

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

Trong ứng dụng/app.rb

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

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

Nó không làm việc cho tôi. Có cách nào tôi có thể truy cập current_account trong các mô hình của tôi không?

Cảm ơn bạn đã hướng dẫn hoặc đề xuất bất kỳ.

Trả lời

3

Tôi không chắc chắn chính xác những gì bạn đang cố gắng để làm, nhưng tôi giải quyết một vấn đề tương tự như thế này:

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

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

Và sau đó sử dụng Account.current để truy cập nó.

Các vấn đề liên quan