问题
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
回答1:
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
回答2:
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.
回答3:
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.
来源:https://stackoverflow.com/questions/2476624/authlogics-current-user-object-in-models