2010-11-02 9 views
0

Je viens de créer une nouvelle table en utilisant une migration Rails, puis j'ai créé un modèle où j'ai ajouté dans ses relations.La table 'project_dev.users' n'existe pas

J'ai redémarré ma console et la console MySQL affiche la table dans la base de données project_dev.

Lorsque je tente de créer un nouvel enregistrement dans ma console Ruby, je reçois:

Mysql::Error: Table 'project_dev.trace_users' doesn't exist from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/connection_adapters/mysql_adapter.rb:287:in 'query' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/connection_adapters/mysql_adapter.rb:287:in 'execute' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/connection_adapters/mysql_adapter.rb:438:in 'columns' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/base.rb:679:in 'columns' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/persistence.rb:285:in 'attributes_from_column_definition' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/locking/optimistic.rb:62:in 'attributes_from_column_definition' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/act ive_record/base.rb:1396:in 'initialize' from (irb):2:in 'new' from (irb):2 from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/c ommands/console.rb:44:in 'start' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/c ommands/console.rb:8:in 'start' from C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/c ommands.rb:23:in '<top (required)>' from script/rails:6:in 'require' from script/rails:6:in '<main>'

+1

Eh bien, est-ce que 'trace_users' existe? –

+0

@Pekka ... voir ma réponse ci-dessous o =) – sscirrus

Répondre

2

Il semble que j'étais un peu plus incompétent hier que je ne l'avouerais autrement - les tables de migration ont été créées au singulier au lieu du pluriel - cela a conduit à la table trace_user au lieu de trace_users.

@Ben - J'ai appelé la table parce que j'ai quelques tables de trace dans le système enregistrant différents types d'événements, et j'ai préféré avoir toutes les tables de trace ensemble - IMHO cela aide à rendre les tables plus faciles à comprendre essayer de comprendre le système dans son ensemble.

1

Vous avez eu un modèle de l'utilisateur, puis ajouté un modèle de trace, non? Vous avez tout fait correctement, sauf que depuis que vous avez ajouté has_many utilisateurs dans Trace, vous devez maintenant créer la table d'association (via une autre migration). Envisager de corriger la direction de l'association (l'utilisateur a beaucoup de traces?) Afin que la table soit user_traces, ce qui me semble mieux.