Как вызвать вспомогательный метод 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: слишком длинный комментарий

Другие вопросы по тегам