2010-11-30 7 views
0

J'ai 2 modèles dans un espace de noms différent.Impossible d'obtenir les données des modèles associés dans Rails

class Admin::Membership < ActiveRecord::Base 
    has_many :authorization_roles 
end 


class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership 
end 

Le modèle d'adhésion est dans un autre dossier avec le modèle AuthorizationRole (je ne sais pas ce qu'on appelle)

Lorsqu'il est exécuté Admin::Membership.find(:all), les données du modèle AuthorizationRole ne sont pas inclus. J'ai créé le champ membership_id sur la table authorization_roles, mais je n'arrive toujours pas à associer les deux modèles. Quelque chose ne va pas dans ce code? Désolé si je manque quelque chose de basique ici.

Répondre

0

Je ne l'ai jamais utilisé des modèles et des espaces de noms, je ne pense pas que vous devez ... mais peut-être vous devrez spécifier le nom de classe dans AuthorizationRole, quelque chose comme:

belongs_to :membership, :class_name => 'Admin::Membership' 

MISE À JOUR:

en supposant que vous avez:

class Membership < ActiveRecord::Base 
    has_many :authorization_roles 
end 

class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership 
end 

vous avez ajouté une colonne entière appelée à membership_id authorization_roles et vous avez exécuter les migrations. Maintenant, vous devriez être en mesure de créer authorization_roles comme ce @membership.authorization_roles.create(...) chercher les @membership.authorization_roles

+0

Aucun changement, je suis déjà essayer, ou peut-être que je dois spécifier quel champ pour faire la relation? –

+0

J'ai essayé de déplacer le fichier dans le même dossier et n'utilisez pas l'espace de noms, mais je n'ai eu aucun changement. –

+0

a modifié ma réponse – jordinl

1

Essayez cette

class Admin::Membership < ActiveRecord::Base 
    has_many :authorization_roles, :class_name => '::AuthorizationRole' 
end 


class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership, :class_name => 'Admin::Membership' 
end 
0

Vérifiez si vous définissez le préfixe du nom de la table. Le générateur de modèle Rails ajoute un fichier comme celui-ci pour les modèles namespaced:

# /app/models/admin.rb 
module Admin 
    def self.table_name_prefix 
    'admin_' 
    end 
end 

Note: Ceci est la version Rails 3.0.1 - pas sûr de versions antérieures.

Questions connexes