2010-10-17 3 views
1

J'utilise RadRails pour créer mes tables de base de données MYSQL. Tâche de migration:Ruby on Rails noms incorrects clé primaire

class CreateEvents < ActiveRecord::Migration 
    def self.up 
    create_table :events do |t| 
     t.string :eventname 
     t.string :evententryurl 
     t.string :eventurl 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :events 
    end 
end 

Ensuite, je lance une tâche db: migrate Rake. Cela crée les champs suivants dans la table de la base de données:

id 
eventname 
evententryurl 
eventurl 

OK, jusqu'à présent. Le problème que j'ai est quand je cours l'application et aller à http://localhost/events/new l'application recherche eventid car c'est la clé primaire, pas l'identification. Comment puis-je modifier ma tâche de migration afin qu'elle mette automatiquement dans la base de données eventid comme clé primaire?

+0

Afficher un exemple de modèle pour la même table. –

Répondre

1

Il semble que vous essayez de remplacer le nom de clé primaire par défaut id dans la migration par eventid. Je suppose que la demande est à la recherche de eventid au lieu de id parce que vous avez utilisé set_primary_key :eventid dans le modèle.

Voici ce que vous avez besoin:

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-create_table

: PRIMARY_KEY Le nom de la clé primaire, si l'on est à ajouter automatiquement. Par défaut à id. Si: id est faux, cette option est ignorée.

Notez également que cette règle simplement la clé primaire dans le tableau. Vous devez en outre pour configurer la clé primaire dans le modèle via la macro de set_primary_key. Les modèles ne détectent PAS automatiquement la clé primaire à partir de la définition de la table .