нет ошибки метода в отношениях один ко многим - PullRequest
0 голосов
/ 21 декабря 2010

models / user.rb

class User < ActiveRecord::Base
 has_many :clubs, :dependent => :destroy
 has_many :announcements, :dependent => :destroy
end

models / announce.rb

class Announcement < ActiveRecord::Base
 belongs_to :user
 belongs_to :club
end

models / club.rb

class Club < ActiveRecord::Base
  belongs_to :user
  has_many :announcements, :dependent => :destroy
end

контроллеры / анонсы / announcements_controller.rb

def index
 @announcements = Announcement.find(:all, :include => [:user, :club])
end

Проблема:

Когда я набираю этот код,

просмотров / объявлений / index.html.erb

<% @announcements.each do |announcement| %>
 <%= announcement.user.username %>
<% end %>

Я получаю эту ошибку:

NoMethodError in Announcements#index
 undefined method `username' for nil:NilClass

, когда я изменяю код на это, он работает.

<% @announcements.each do |announcement| %>
 <%= announcement.club.user.username %>
<% end %>

Почему первый код не работает?В чем разница между этими кодами.Спасибо.

1 Ответ

2 голосов
/ 21 декабря 2010

Похоже, у вас есть объявление, у которого нет настроенного пользователя, но есть клуб, в котором, в свою очередь, есть пользователь. Возможно, стоит подумать о добавлении проверки, требующей наличия столбца :user_id в объявлении.

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