2010-04-27 8 views
0

J'ai une application avec trois modèles (Profile -> SubModel -> SubSubModel) chaînés avec de nombreuses relations. J'essaie de limiter un utilisateur, après s'être connecté, à récupérer uniquement les enregistrements associés à son profil. Je suis très nouveau sur les rails, ce qui est ce que j'avais essayé dans le modèle de profilLimiter un utilisateur pour afficher uniquement les enregistrements associés dans les rails

has_many :submodels, :conditions => {:profile_id => self.id} 

mais cela revient un ensemble de données vide lorsque vous appelez avec Profile.find_by_id (1) .submodels, comment pourrais-je obtenir ce que j'essaie de faire. Ou devrais-je gérer cela dans le contrôleur ou la vue à la place, je pensais que cela semblait bien adapté pour le maniement de ce modèle.

Répondre

1

vous n'avez pas besoin de conditions sur l'appel has_many - par défaut, il ne retournera que les sous-modèles associés au profil.

+0

Eh bien c'est ce que je reçois pour ne pas penser ... – trobrock

0

Si vous avez nommé vos classes et touches étrangères/primaires aux conventions Rails, il suffit d'utiliser

class Profile 
    has_many :sub_models 
end 

et laissez Rails comprendre.

Cela suppose:

  • Profil enveloppements une table nommée profiles, qui a une clé primaire numérique nommé id
  • sous-modèle enveloppements une table nommée sub_models, qui a une clé étrangère numérique nommée profile_id