Почему я получаю ошибку неопределенного метода с моим отношением has_one в rails?

У меня есть страница, на которой выводятся все профили пользователей, существующие в системе. Раньше работало, ничего не менял, а сейчас не работает. Он говорит мне, что у меня есть "неопределенный метод `profile_name' для nil:NilClass", но я много раз ссылаюсь на profile_name в других местах приложения. Вот страница просмотра индекса:

<% @profiles.each do |profile| %>
    <%= link_to profile.user.inspect, profile_path(profile.user.profile_name) %><br><br>
<% end %>

Вот модель профиля:

class Profile < ActiveRecord::Base
    belongs_to :user
end

Вот модель пользователя:

class User < ActiveRecord::Base
    has_one :profile

Вот контроллер профилей:

def index
    @profiles = Profile.all
end

Также в таблице профилей в базе есть столбец user_id. Кроме того, я проверил свою базу данных, и у всех пользователей есть имя профиля. На странице профиля я ссылаюсь на @user.profile.(атрибут профиля), поэтому я знаю, что отношение has_one/belongs_to работает. Я не могу понять, что делать. Пожалуйста помоги.

Спасибо.


person Philip7899    schedule 25.10.2013    source источник


Ответы (2)


Все ли ваши профили имеют значение user_id? Возможно, вы захотите сделать следующее, чтобы убедиться, что user_id присутствует для всех профилей:

Profile.pluck :user_id

Я подозреваю, что объект/запись профиля не имеет user_id и, следовательно, обход через profile.user.profile_name приводит к ошибке класса nil.

person Christian Fazzini    schedule 25.10.2013

По какой-то причине ваш profile.user является nil. Поскольку nil не имеет определенного метода .profile_name, вы получаете свою ошибку.

Я предполагаю, что в @profiles есть профиль, для которого не определен user_id.

person Tyler    schedule 25.10.2013