未定义方法的未决迁移错误 - Rails 4
Pending migration error for undefined method - Rails 4
我正在修复我在将数据库 table 中的列类型从整数命名为日期时间时犯的错误。但是,在我 运行 rake db:migrate 写完以下内容后,我得到了一个挂起的迁移错误。当我通过 rails g MigrateDeliveryTimeDates 添加新迁移时,db/migrate 下没有生成新文件,所以我手动创建了它。错误内容为:
An error has occurred, this and all later migrations canceled:
undefined method `deliverytime_temp'
这是我的 db/migrate 文件:
class ChangeColumnDeliveryTime < ActiveRecord::Migration
def change
rename_column(:deliveries, :deliverytime, :deliverytime_temp)
add_column(:deliveries, :deliverytime, :datetime)
end
end
这是我添加的迁移 (rails g migration ChangeColumnDeliveryTime):
class ChangeColumnDeliveryTime < ActiveRecord::Migration
def change
change_column(:deliveries, :deliverytime, :datetime)
end
end
这是我的数据库模式:
ActiveRecord::Schema.define(version: 20160216220012) do
create_table "deliveries", force: :cascade do |t|
t.string "name"
t.string "deliveryaddress"
t.integer "deliverytime"
t.string "notes"
t.integer "order_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "deliveries", ["order_id"], name: "index_deliveries_on_order_id"
create_table "orders", force: :cascade do |t|
t.datetime "date"
t.string "name"
t.string "pickup"
t.datetime "pickuptime"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
我该如何解决这个错误?
您需要使用change_column method instead add_column
def change
# rename_column :table_name, :old_column_name, :new_column_name
rename_column :deliveries, :deliverytime, :deliverytime_temp
change_column :deliveries, :deliverytime_temp, :datetime
# change_column :table_name, :column_name, :new_data_type
end
我正在修复我在将数据库 table 中的列类型从整数命名为日期时间时犯的错误。但是,在我 运行 rake db:migrate 写完以下内容后,我得到了一个挂起的迁移错误。当我通过 rails g MigrateDeliveryTimeDates 添加新迁移时,db/migrate 下没有生成新文件,所以我手动创建了它。错误内容为:
An error has occurred, this and all later migrations canceled:
undefined method `deliverytime_temp'
这是我的 db/migrate 文件:
class ChangeColumnDeliveryTime < ActiveRecord::Migration
def change
rename_column(:deliveries, :deliverytime, :deliverytime_temp)
add_column(:deliveries, :deliverytime, :datetime)
end
end
这是我添加的迁移 (rails g migration ChangeColumnDeliveryTime):
class ChangeColumnDeliveryTime < ActiveRecord::Migration
def change
change_column(:deliveries, :deliverytime, :datetime)
end
end
这是我的数据库模式:
ActiveRecord::Schema.define(version: 20160216220012) do
create_table "deliveries", force: :cascade do |t|
t.string "name"
t.string "deliveryaddress"
t.integer "deliverytime"
t.string "notes"
t.integer "order_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "deliveries", ["order_id"], name: "index_deliveries_on_order_id"
create_table "orders", force: :cascade do |t|
t.datetime "date"
t.string "name"
t.string "pickup"
t.datetime "pickuptime"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
我该如何解决这个错误?
您需要使用change_column method instead add_column
def change
# rename_column :table_name, :old_column_name, :new_column_name
rename_column :deliveries, :deliverytime, :deliverytime_temp
change_column :deliveries, :deliverytime_temp, :datetime
# change_column :table_name, :column_name, :new_data_type
end