2009-10-23 7 views
0

J'utilise ar_fixtures aux semences de données dans un projet de rails (la procédure a été écrit avant les semences sont arrivés à 2.3.4)Comment obtenir ar_fixtures pour charger des attributs protégés?

Il est tout fonctionne bien, sauf que je trouve que une colonne en particulier ne reçoit pas rempli (identifiant d'utilisateur). user_id est défini dans le fichier YAML, par exemple:

- !ruby/object:Service 
    attributes: 
    name: name 
    updated_at: 2009-10-14 11:50:36 
    provider_id: "1" 
    id: "1" 
    description: "" 
    user_id: "1" 
    created_at: 2009-10-14 11:47:01 
    attributes_cache: {} 

Mais même si l'objet utilisateur lié existe lors de l'exécution de l'importation (Service.load_from_file), user_id est nul après l'importation. D'autres clés étrangères (comme provider_id dans l'exemple ci-dessus) sont chargées correctement.

Je me doute que c'est parce que user_id est protégé dans le modèle et que cela se bloque pendant l'assignation de masse.

Est-ce que quelqu'un sait si c'est le cas, et si oui, comment contourner la protection d'assignation de masse? Bien sûr, je veux laisser la protection d'assignation de masse en place pour l'application à l'exécution.

Répondre

2

Correction! Répondre à ma propre question ..

Nécessite simplement un réglage du paramètre attr_protected/attr_accessible avant le chargement. par exemple.

Service.attr_protected.delete "user_id" 
Service.load_from_file 

Ou si la restriction est basée sur attr_accessible:

Service.attr_accessible :user_id 
Service.load_from_file 
Questions connexes