2011-06-19 2 views
1

J'ai deux modèles:Comment faire le travail d'association

class Group < ActiveRecord::Base 
    belongs_to :sites 
end 

class Site < ActiveRecord::Base 
    has_many :groups 
end 

Je peux obtenir tous les groupes qui appartient au site:

Site.find(1).groups 

Mais je ne peux pas le site auquel appartient donné le groupe:

$ Group.find(1) 
#<Group id:1 ...., site_id: "1"> 
$ Group.find(1).sites 
nil 

Pourquoi?

+2

Cela ne devrait pas être 'appartient_t o: site'? –

+0

Oui, merci. Pouvez-vous créer la réponse et je vais fermer la réponse? – demas

+0

Cocher Atzoya. Pas besoin d'avoir des réponses avec le même contenu et je survivrai sans avoir reçu le 15pt. ;) –

Répondre

2

Probablement parce que le groupe appartient à 1, il doit être au singulier

$ Group.find(1).site 

Et comme Marcel Jackwerth dit le belongs_to devrait également être au singulier

class Group < ActiveRecord::Base 
    belongs_to :site 
end 
+0

irb (principal): 015: 0> Group.find (1) .site NoMethodError: méthode non définie 'site 'pour # demas

+0

Mais ce sera utile avec le commentaire de Marcel. – demas

-1

Si elle ne le fait pas Vous pouvez toujours ajouter la méthode publique suivante à group.rb

def site 
    Site.find self.site_id 
end 
Questions connexes