Je suis en train d'écrire une migration pour convertir une application non-rails dans le bon format pour les rails - l'une des tables n'a pas d'incrémentation automatique sur la colonne id. Y at-il un moyen rapide de l'allumer pendant une migration, peut-être avec change_column
ou quelque chose?Créer un attribut d'incrémentation automatique manquant avec migration de rails
Répondre
Vous devez exécuter une instruction SQL.
statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT"
ActiveRecord::Base.connection.execute(statement)
Notez que ceci n'est qu'un exemple. La syntaxe finale de l'instruction SQL dépend de la base de données.
Si vous êtes sur postgesql, une seule requête ne le fera pas. Vous devrez créer une nouvelle séquence dans la base de données.
create sequence users_id_seq;
Ensuite, ajoutez la colonne id à votre table
alter table users
add id INT UNIQUE;
Réglez ensuite la valeur par défaut pour l'ID
alter table users
alter column id
set default nextval('users_id_seq');
remplir ensuite la colonne id. Cela peut être assez long si la table a plusieurs lignes
update users
set id = nextval('users_id_seq');
Hope this helps utilisateurs ... postgresql
Merci! C'est très utile! –
Les Postgres answer by @jlfenaux misses sur le type serial
, qui fait tout pour vous automatiquement:
ALTER TABLE tbl add tbl_id serial;
- 1. Attribut manquant dans activeecord
- 2. Modèle de commentaire automatique sur la migration dans Rails?
- 3. Rails 3 Migration avec longtext
- 4. Rails rename_column migration issue
- 5. Sphinx pensant: Attribut manquant pour clé étrangère
- 6. Clés étrangères avec ActiveRecord :: Migration de Rails?
- 7. Créer un index distinct de plusieurs colonnes en utilisant MySQL avec rails migration
- 8. Migration de Rails: t.references avec un autre nom?
- 9. Dossier manquant dans Rails Testing
- 10. champ manquant mysql après l'exécution de la migration des rails db
- 11. Migration de Rails 2 à Rails 3
- 12. Migration de données dans une migration de rails
- 13. Rails add_test_data migration
- 14. /public/rails dossier manquant
- 15. Quand créer une migration?
- 16. Comment protéger un attribut de modèle Rails?
- 17. migration Rails refactoring
- 18. xcodes classmodel automatique: comment réparer un héritage-lien manquant
- 19. migration Rails QUESTION
- 20. Créer une colonne d'ensemble avec la migration de base de données dans les rails
- 21. Comment créer un attribut de préférence utilisateur?
- 22. Migration de Ruby on Rails - Créer un nouveau schéma de base de données
- 23. Index MySQL Fulltext avec Rails 2.3.2 (problème de migration)
- 24. Migration de portlet Websphere, paramètre manquant dans DispatchAction
- 25. Problème de migration de Rails 2.3 avec les assistants
- 26. Attribut d'incrémentation automatique avec une logique personnalisée dans SQLAlchemy
- 27. Rails: Comment nommer un attribut d'un modèle d'une manière spécifique?
- 28. Comment créer un onglet de masquage automatique?
- 29. Créer un lien avec Ruby on Rails
- 30. Rails IIS 7 manquant disptach.fcgi
merci beaucoup @Simone Carletti, gaspillés journée entière pour résoudre le problème, mais maintenant il est résolu et grâce DGM aussi, pour postin g question spécifique à mon cas. Pouvez-vous me donner une idée sur l'écriture des procédures stockées dans les rails 4.1 d'une manière élégante, en espérant que vous m'aiderez à nouveau. Codage heureux. – roarfromror
Je ne connais pas beaucoup d'activité dans les rails en utilisant des procédures stockées - certains coins des rails ont peu d'utilité pour les côtés les plus puissants de SQL, d'autres ne le savent pas ... de toute façon, à tout le moins, vous pouvez utiliser cette même forme pour écrire le SQL pour créer la procédure stockée. – DGM