【问题标题】::limit parameter don't seem to work in migrations on Rails 6.1.4.1:limit 参数似乎不适用于 Rails 6.1.4.1 上的迁移
【发布时间】:2021-12-04 13:47:50
【问题描述】:

生成迁移后,我总是更改默认 t.timestamps ,因为 Postgres 数据库的其他应用程序在此默认时间戳所具有的大精度方面存在问题。我也喜欢数据库设置时间戳(而不是 Rails 为我这样做),因此 'CURRENT_TIMESTAMP'

class CreateUsers < ActiveRecord::Migration[6.1]
  def change
    create_table :users do |t|
      t.string :name

      t.timestamps limit: 3, default: -> { "timezone('utc', now())" }, null: false
    end
  end
end

我最近升级到 Rails 6.1.4.1(来自 Rails 5.2)

limit: 3 设置似乎不再起作用。它没有给出任何警告,但在查看 Postgres 数据库时,数据类型是 timestamp 而不是运行此类迁移后通常的 `timestamp(3)。

【问题讨论】:

    标签: postgresql ruby-on-rails-6


    【解决方案1】:

    Rails 已将该设置的名称从 :limit 更改为 :precision

    所以你应该把你的代码改成:

    t.timestamps precision: 3, default: -&gt; { "timezone('utc', now())" }, null: false

    或者你可以将Migration类的Base类改成旧版本

    ActiveRecord::Migration[5.2]

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多