jriff
jriff

Reputation: 1977

Authlogic's current_user object in models

I need to know the ID of the current user in a model:

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

But I guess that is not how it is done?

Regards,

Jacob

Upvotes: 8

Views: 2082

Answers (3)

VelLes
VelLes

Reputation: 1032

The best way to access the current_user in the Model(s) when using Authlogic is using Sentiant User - https://github.com/bokmann/sentient_user There is a full documentation on the there how to use it.

Upvotes: 0

Luqman
Luqman

Reputation: 3110

assuming the user is loggedin you can use

UserSession.find.user

You might want to add checks to ensure UserSession.find returns something before calling .user

Upvotes: 15

Damien MATHIEU
Damien MATHIEU

Reputation: 32629

It's not possible.
The current_user relies on the session, which isn't available in the model (and that's normal. The models are context-independent).

You should pass the user to the model as a parameter.

Upvotes: 1

Related Questions