Если вы получаете такие ошибки при запуске mongod из командной строки или на сервере mongodb, , выполните следующие шаги:
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!
Который вызовет исключение, если ничего не будет найдено (из которого вы затем сможете спасти)