我遇到的问题是,当我运行迁移时,更新会应用于数据库,但 rails 不会这样做。
为了更准确。我有一个带有门牌号的地址模型。Recetly 我被告知门牌号码应该能够包含字母,如(35B)。因此,我想将整数列转换为字符串列。无论如何,这对我的数据没有问题,红色。只有整数。
我应用的迁移按预期工作。它更改 postgres 数据库中列的类型并保留数据内容。我正在使用此迁移。
class ConvertIntToStringOnNumber < ActiveRecord::Migration
def change
change_table :addresses do |t|
t.change :number, :string
end
end
end
使用此 schema.rb 的迁移结果
create_table "addresses", :force => true do |t|
t.string "street"
t.string "number"
t.integer "zip"
t.string "floor"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
在我的 heroku 服务器上运行迁移后,我无法使用表单中的数据查询数据库,这在之前没问题。Rails 正在尝试查找整数,但数据库包含字符串。
Rails 正在尝试运行此查询,即使 schema.rb 说的有些不同。这是聚会停止的地方。
SELECT "addresses".* FROM "addresses" WHERE "addresses"."street" = 'xxxx' AND "addresses"."number" = 63 AND "addresses"."floor" = '' AND "addresses"."zip" = 9000 LIMIT 1):
我已经看到了很多与外来键有关的问题,但这不是这些问题之一。