Rails 7.0 模式具有任意精度:在我的时间戳上添加了 6

Pet*_*dis 6 postgresql ruby-on-rails

我正在开发一个新的 Rails 应用程序,当我运行迁移时 schema.rb 正在更改,新的参数精度会添加到我的时间戳中。

这个精度新参数从哪里来?

t.datetime "created_at", precision: 6, null: false
Run Code Online (Sandbox Code Playgroud)

jib*_*iel 13

precision是通过ActiveRecord::ConnectionAdapters::SchemaStatements#add_timestamps方法添加的。

\n

它不是任意的,但非常适合时间戳属性(微秒精度与秒精度),如果 RDBMS 支持的话。

\n

这些默认设置已经存在至少 3 年了(从 Rails 6.0 开始)。

\n

自2021 年夏天 以来#add_column#column方法也定义了它们。因此,如果您升级到Rails 7.0.2 \xe2\x80\x94precision: 6将被删除,schema.rb因为它现在是一个内部逻辑。

\n

您可以在 Active Record变更日志中找到一些相关的迁移指南。

\n