J'ai beaucoup de données que j'essaye de semer dans un modèle polymorphe dans Rails 2.3.8. L'association pour toutes les données est avec le modèle du comté. Les données ressemble à:Ruby on Rails: Comment graine-t-on la colonne * _type dans les modèles polymorphes?
data = Datum.create([
...
{ :value => '14389', :value_type => County, :value_id =>'3103'},
{ :value => '59013', :value_type => County, :value_id =>'3105'},
{ :value => '17117', :value_type => County, :value_id =>'3106'},
...
])
Le: value_type => Les valeurs du comté conduisent à « méthode non définie BASE_CLASS' pour cordes: classe. »
J'ai des dizaines de milliers de ces valeurs que je voudrais semer dans la base de données. Ils sont similaires aux valeurs ci-dessus, sauf certains sont associés au modèle du comté, certains avec le modèle d'État, et d'autres avec le modèle de la ville. Ce sont des valeurs statiques qui ne seront pas éditées après l'introduction dans la base de données.
Comment puis-je graver le modèle dans le champ: type_valeur?
(ou ... suis-je aborder ce mal et si oui, comment voulez-vous aborder?)
Edit: La partie pertinente du fichier schema.rb:
Isaac -
create_table "data", :force => true do |t|
t.integer "value"
t.string "value_type"
t.integer "value_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "counties", :force => true do |t|
t.string "name"
t.integer "state_id"
t.integer "ansi_code"
t.string "ansi_class"
t.datetime "created_at"
t.datetime "updated_at"
end
J'ai essayé ce qui suit sur l'ensemencement, aussi, et cela n'a pas fonctionné (County guillemets):
{ :value => '14389', :value_type => 'County', :value_id =>'3103'},
Pouvez-vous publier les parties pertinentes de votre schéma.rb? –
Avoir 'value',' value_type' et 'value_id' n'a pas de sens. Le modèle Datum utiliserait 'value_type' et' value_id' pour aller trouver l'enregistrement correct dans une autre table quand on y accède avec quelque chose comme 'somedatum.value' –
Jamie - J'ai suivi l'exemple d'Obie" The Rails Way "p. 215 où, dans un modèle Commentaire, il existe des champs 'subject',' subject_id', et 'subject_type'. Le modèle Comment inclut 'belongs_to: subject,: polymorphic => true' et les autres classes ont' has_many: comments,: as =>: subject'. Mon modèle de référence incluait la ligne 'belongs_to: value,: polymorphic => true'. Le modèle My County comprenait la ligne 'has_many: data,: as =>: value'. – Clay