运行迁移限制后的Rails 5在模式中消失

时间:2017-05-19 05:12:36

标签: ruby-on-rails ruby-on-rails-5

最近我将我的应用程序从Rails 4.2升级到Rails 5.0.3。然后我试图进行迁移:

class AddInvitationToJoinToContests < ActiveRecord::Migration
  def change
    add_column :goods, :new_field, :string
  end
end

迁移正确运行,但其他表字段的limit选项已消失:

create_table "users", force: :cascade do |t|
-    t.string   "name",               limit: 191, null: false
-    t.string   "language",           limit: 191
-    t.string   "image_id",           limit: 191
+    t.string   "name",               null: false
+    t.string   "language"
+    t.string   "image_id"
end

知道为什么吗?

相关问题:

1 个答案:

答案 0 :(得分:-1)

这可能是因为Rails 5没有列出&#34;限制&#34;对于列,如果限制与该列的数据类型的默认值匹配。

https://github.com/rails/rails/commit/835617b71d2e829c27dbd16a82f22c186c821a0f

您可以在此变更集的注释中看到,这是为了使schema.rb与数据库无关。我怀疑,无论您使用哪种数据库适配器,默认的限制是&#39;对于字符串类型是191。