如何告诉我的迁移使用哪种列类型?

时间:2017-10-11 20:35:28

标签: postgresql foreign-keys migration ruby-on-rails-5

我使用的是Rails 5和PostGres 9.5。我创建了这个迁移

Even (Add (Mult n1 m) n1)

但地址表的ID列不是整数。也许是因为这个原因,我在运行迁移时遇到以下错误

class CreateSearchCodeTable < ActiveRecord::Migration[5.0]
  def change
    create_table :search_codes do |t|
      t.string :code
      t.references :address, index: true, foreign_key: true, on_delete: :cascade
      t.index ["code"], name: "index_search_codes_on_code", unique: true, using: :btree
    end
  end
end

如何指示我的迁移创建与引用列类型相同的列?

1 个答案:

答案 0 :(得分:1)

t.references将作业委托给add_reference,此人接受:type参数。从这一点来看,你应该能够做到

t.references :address, type: :string, index: true, foreign_key: true, on_delete: :cascade
                       ^^^^^^^^^^^^^

刚刚在基于玩具sqlite3的项目上测试了这个,它确实有效。应该“正好”在pg上工作。

  

如何指示我的迁移创建与引用列类型相同的列?

如果您打算告诉它推断另一列的类型并且该类型的类型与之匹配,那么这可能是不可能的。但您可以始终明确指定类型。