Как вызвать вспомогательный метод ApplicationController в модели? RoR
Ребята у меня есть вспомогательный метод в ApplicationController следующим образом
class ApplicationController < ActionController::Base
helper_method :current_user
end
И я хочу назвать это в моей модели (скажем, Project) следующим образом:
class Project < ActiveRecord::Base
after_save :update_other_tables
private
def update_other_tables
# if project saves, Create a new insteance into User Projects
@userproject=UserProject.new(
:user_id=>User.current_user.id,
:project_id=>self.id
)
@userproject.save
end
Здесь я получаю сообщение об ошибке, как неопределенный метод `current_user' Итак, как вызвать этот метод в модели? Помогите мне, пожалуйста
2 ответа
Я бы сделал это следующим образом:
class ApplicationController < ActionController::Base
# Assignment method
def current_user=(user)
@current_user = user
end
# Returns the current user, nil otherwise
def current_user
@current_user
end
end
Теперь, когда пользователь входит в систему, вы можете установить:current_user = the_user
И с этого момента вы можете сделать:current_user.id
Надеюсь это поможет.
не парень рубин, но я предполагаю, что пользователь здесь не ссылается на пользователя, который присутствует в пространстве имен вашего контроллера, и поэтому у объекта нет метода current_user. Возможно, вам нужно передать объект User в ваш вспомогательный метод или просто передайте идентификатор..
Приведенная выше теория основана на моем опыте работы с чем-то похожим в.Net MVC, поэтому, пожалуйста, исправьте меня, если я ошибаюсь, и я удалю ответ..
PS: слишком длинный комментарий