J'utilise Ruby avec du raisin. J'ai créé un fichier de migration pour générer un modèle. Lorsque j'ai exécuté le fichier de migration, aucune erreur n'a été générée mais le modèle n'a pas été créé. J'ai donc essayé de revenir en arrière. puisque le modèle ne quitte pas, il renvoie à nouveau une erreur.Le nom de l'index sur le tableau n'existe pas
class CreatePaymentFortumoInstruments < ActiveRecord::Migration
def change
create_table(:payment_fortumo_instruments, id: false) do |t|
t.primary_key :id, :uuid
t.string :consumer_id, null: false
t.string :product_code, null: true, default: nil
t.string :partner, null: false
t.string :aasm_state, null: false
t.datetime :issued_at, null: true
t.datetime :activated_at, null: true
t.datetime :deactivated_at, null: true
t.timestamps
end
add_index :payment_fortumo_instruments, :id
add_index :payment_fortumo_instruments, :consumer_id
end
end
et l'erreur jeté en roulant arrière
== 76 CreatePaymentFortumoInstruments: reverting
==============================
-- remove_index(:payment_fortumo_instruments,
{:column=>:consumer_id})
rake aborted!
StandardError: An error has occurred, this and all later migrations
canceled:
Index name ‘index_payment_fortumo_instruments_on_consumer_id’ on table
‘payment_fortumo_instruments’ does not exist
/opt/icflix/billing-v2/Rakefile:53:in `block (2 levels) in <top
(required)>'
ArgumentError: Index name
‘index_payment_fortumo_instruments_on_consumer_id’ on table
‘payment_fortumo_instruments’ does not exist
/opt/icflix/billing-v2/Rakefile:53:in `block (2 levels) in <top
(required)>'
Tasks: TOP => db:rollback
(See full trace by running task with --trace)
Comment puis-je utiliser le même fichier de migration et de créer le modèle. Je ne veux pas créer un nouveau fichier de migration pour le même.
Désolé, le nom du modèle est CreatePaymentFortumoInstruments pas CreateTestPaymentFortumoInstruments. –
Supprimez le dernier enregistrement de migration de votre table schema_migrations. Si votre fichier schema.rb est déjà généré, remplacez le numéro de version par le fichier de migration précédent (celui précédant CreatePaymentFortumoInstruments). Ensuite, lancez rake db: migrate –
La création d'une ** table ** via une migration ne créera pas un ** modèle ** associé. (Vous n'avez pas toujours * besoin * d'un modèle pour une table donnée!) Vous devez créer ceci séparément, ou avec une sorte de générateur de "échafaudage" - par ex. [this] (https://github.com/icicletech/grape-scaffold#scaffold). –