1
我正在使用Ruby與葡萄。我創建了一個遷移文件來生成一個模型。當我運行遷移文件時,沒有發生錯誤,但未創建模型。所以我試着回滾。因爲模型不會再次退出會引發錯誤。表格上的索引名稱不存在
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
同時回滾
== 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)
我怎樣才能再次運行相同的遷移文件,並創建模型中引發的錯誤。我不想爲此創建新的遷移文件。
對不起,型號名稱是CreatePaymentFortumoInstruments而不是CreateTestPaymentFortumoInstruments。 –
從您的schema_migrations表中刪除上次的遷移記錄。如果您的schema.rb文件已經生成,請使用先前的遷移文件(CreatePaymentFortumoInstruments之前的文件)替換版本號。然後運行rake db:migrate –
通過遷移創建**表**不會創建關聯的**模型**。 (您並不總是*需要*給定表格的模型!)您需要單獨創建,或使用某種「腳手架」發生器 - 例如[本](https://github.com/icicletech/grape-scaffold#scaffold)。 –