Объект current_user от Authlogic в моделях - PullRequest
8 голосов
/ 19 марта 2010

Мне нужно знать идентификатор текущего пользователя в модели:

def after_save
  desc, points=nil, nil

  if answer_index == daily_question.correct_answer_index 
    desc = I18n.t('daily_question.point_log.description.correct') 
    points=daily_question.points
  else
    desc = I18n.t('daily_question.point_log.description.incorrect')
  end

  current_user.give_points(:description => desc,
                           :points => points
                          )
end

Но я думаю, что это не так, как это делается?

С уважением,

Jacob

Ответы [ 3 ]

15 голосов
/ 19 марта 2010

при условии, что пользователь вошел в систему, вы можете использовать

UserSession.find.user

Возможно, вы захотите добавить проверки, чтобы UserSession.find возвращал что-то перед вызовом .user

1 голос
/ 19 марта 2010

Это невозможно.
Current_user использует сеанс, который недоступен в модели (и это нормально. Модели не зависят от контекста).

Вы должны передать пользователямодель как параметр.

0 голосов
/ 28 июня 2011

Лучший способ получить доступ к current_user в моделях при использовании Authlogic - использовать Sentiant User - https://github.com/bokmann/sentient_user Там есть полная документация о том, как его использовать.

...