Ruby on rails &引用;PG::未定义的列:“;部署rails应用程序时

Ruby on rails &引用;PG::未定义的列:“;部署rails应用程序时,ruby-on-rails,ruby,postgresql,database-migration,Ruby On Rails,Ruby,Postgresql,Database Migration,使用Capistrano将我的更改部署到生产时,我收到错误消息 PG::UndefinedColumn: ERROR: column "address_id" of relation "member_applications" does not exist 在我的迁移过程中 class CreateAddresses < ActiveRecord::Migration[5.1] def change create_table :addresses do |t|

使用Capistrano将我的更改部署到生产时,我收到错误消息

PG::UndefinedColumn: ERROR:  column "address_id" of relation "member_applications" does not exist
在我的迁移过程中

class CreateAddresses < ActiveRecord::Migration[5.1]
    def change
        create_table :addresses do |t|
            t.string :full_name, null: false
            t.string :email, null: false
            t.string :phone, null: false
            t.string :address, null: false
            t.string :state, null: false
            t.string :country, null: false
            t.string :postcode, null: false
            t.timestamps
        end
    end
end
class CreateAddresses

class CreateMemberApplications
最后

class SetAddressToNull < ActiveRecord::Migration[5.1]
  def change
      change_column_null :member_applications, :address_id, true
  end
end
class SetAddressToFull

最后一次迁移似乎是导致问题的原因之一。是什么导致了这个问题?它一直在我的开发机器上工作,但自上次部署以来已经有一段时间了。

我相信问题就在这里:

create_table :member_applications do |t|
  ...
  t.references :addresses, null: false
  ...
end
它应该是
t.references:address,null:false
单数形式


您可以检查您的
db/schema.rb
进行验证。

这就是问题所在。不知何故,我的模式使用了正确的地址。\u id。我永远不知道这是如何发生的,但在修复迁移并使用psql重命名服务器上的列之后,它现在可以找到了。
create_table :member_applications do |t|
  ...
  t.references :addresses, null: false
  ...
end