/user.rbaucune erreur de méthode dans relation un à plusieurs modèles
class User < ActiveRecord::Base
has_many :clubs, :dependent => :destroy
has_many :announcements, :dependent => :destroy
end
modèles/announcement.rb
class Announcement < ActiveRecord::Base
belongs_to :user
belongs_to :club
end
modèles/club.rb
class Club < ActiveRecord::Base
belongs_to :user
has_many :announcements, :dependent => :destroy
end
contrôleurs/annonces /announcements_controller.rb
def index
@announcements = Announcement.find(:all, :include => [:user, :club])
end
Problème:
Quand je tape ce code,
vues/annonces/index.html.erb
<% @announcements.each do |announcement| %>
<%= announcement.user.username %>
<% end %>
Je reçois cette erreur:
NoMethodError in Announcements#index
undefined method `username' for nil:NilClass
quand je change de code, ça marche.
<% @announcements.each do |announcement| %>
<%= announcement.club.user.username %>
<% end %>
Pourquoi le premier code ne fonctionne-t-il pas? Quelle est la différence entre ces codes. Merci.
L'utilisateur n'a pas d'utilisateur associé à l'une de vos annonces. Utilisez 'rails console' et vérifiez vos objets Announcements pour voir si c'est le cas. –