Как получить доступ к current_account в моделях в Padrino?

Я работаю над приложением Padrino, в котором есть основное приложение и приложение администратора. Когда пользователь входит в систему через сеанс, я просто запускаю следующие две строки, чтобы войти в систему.

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

С отладчиком в любых контроллерах в Admin

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, чтобы узнать, какой пользователь вошел в систему в приложении администратора, но эта переменная недоступна в основном приложении.

Что я пытаюсь сделать, так это то, что я создаю канал активности или контрольный журнал для всех моих моделей, поэтому, когда запись создается/обновляется/уничтожается в любой модели, в модели Activity создается новая запись. При этом мне нужно получить доступ к переменной current_account в моих моделях.

Я искал решения и наткнулся на предложение:

В админке/app.rb

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

В приложении/app.rb

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

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

Это не сработало для меня. Есть ли способ получить доступ к current_account в моих моделях?

Спасибо за любое руководство или предложение.


person Kevon    schedule 22.11.2013    source источник


Ответы (1)


Я не совсем уверен, что вы пытаетесь сделать, но я решил аналогичную проблему следующим образом:

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

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

А затем используйте Account.current для доступа к нему.

person ujifgc    schedule 23.11.2013