部署rails app时“PG :: UndefinedColumn:”

时间:2017-10-31 00:39:23

标签: 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|
            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 CreateMemberApplications < ActiveRecord::Migration[5.1]
    def change
        create_table :member_applications do |t|
            t.references :location, null: false
            t.references :addresses, null: false
            t.references :user, null: false
            t.string :full_name, null: false
            t.date :birthdate, null: false
            t.timestamps
        end
    end
end

最后

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

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

1 个答案:

答案 0 :(得分:1)

我认为问题在于:

create_table :member_applications do |t|
  ...
  t.references :addresses, null: false
  ...
end

它应该是t.references :address, null: false单数。

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