-неопределенный метод `user 'для nil: NilClass

Если вы получаете такие ошибки при запуске mongod из командной строки или на сервере mongodb, , выполните следующие шаги:

  1. Создайте директории db и log в C: диск C: / data / db и C: data / log
  2. Создать пустой файл журнала в журнале dir с именем mongo.log
  3. Запустить mongod из командной строки для запуска mongodb сервера или создать пакетный файл на рабочем столе, который может запускать файл mongod.exe из вашего руководства по установке mongodb. Таким образом, вам просто нужно щелкнуть пакетный файл со своего рабочего стола и запустить mongodb.
  4. Если у вас 32-разрядная система, попробуйте использовать -journal с командой mongod.

0
задан ray 16 January 2019 в 07:22
поделиться

1 ответ

Profile.find_by возвращает nil, то есть: пользователь не найден. Итак, когда вы пытаетесь @profile.user, вы пытаетесь получить доступ к user на nil.

Убедитесь, что профиль существует с user_id, совпадающим с params[:id], и что params[:id] не является пустым или нулевым.

Чтобы избавиться от фатальной ошибки, нужно проверить, является ли @profile нулем или нет, прежде чем использовать его:

def update
  @profile = Profile.find_by(user_id: params[:id])
  if @profile.present? 
    if @profile.user == current_user
      @profile.update(profile_params) 
      flash[:info] = "Profile successfully updated" 
    else
    end
  else
    # Profile not found
  end
end

Или, вы можете использовать вариацию взрыва find_by:

Profile.find_by!

Который вызовет исключение, если ничего не будет найдено (из которого вы затем сможете спасти)

0
ответ дан Carl Markham 16 January 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: