Почему current_user выдаёт мне ошибку? - PullRequest
1 голос
/ 19 марта 2011

В моем методе создания в контроллере Videos эта строка работает:

@video = Video.new(params[:video])

Однако я хочу назначить видео пользователю, поэтому я использую эту строку, которая выдает мне ошибку:

@video = current_user.videos.new(params[:video])

Это ошибка:

NoMethodError in VideosController#create

undefined method `videos' for nil:NilClass

У меня есть это в моей модели пользователя:

has_many :videos

И это в моей модели видео:

belongs_to :user

Это в моем файле application_controller:

  def current_user
    return unless session[:user_id]
    @current_user ||= User.find_by_id(session[:user_id]) 
  end

  # Make current_user available in templates as a helper
  helper_method :current_user

Как мне исправить эту ошибку?Дайте мне знать, если я должен выложить больше кода.

1 Ответ

3 голосов
/ 19 марта 2011

Эта ошибка возникает только в том случае, если пользователь не вошел в систему или сеанс отсутствует [: user_id]?

Если не войти в систему:

@video = current_user.videos.new(params[:video])

... будет.

@video = nil.videos.new(params[:video])

, что даст вам точное значение NoMethodError

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...