You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails自动生成时间戳表迁移文件语法错误求助

问题分析与解决

这个语法错误其实很好修复——你在调用t.timestamps的时候多写了一个不必要的逗号!

Ruby的关键字参数(比如这里的default:)不需要在方法名后面加逗号分隔,你原来的代码里t.timestamps, default: -> { 'NOW()' }中的逗号让Ruby误以为你要传递位置参数,后面的default:被当成了代码标签,这就触发了语法错误。

修正后的迁移文件

class CreateCustomerOrders < ActiveRecord::Migration[6.0]
  def change
    create_table :customer_orders do |t|
      t.bigint :order_id
      t.string :customer_email
      t.timestamps default: -> { 'NOW()' }
    end
  end
end

额外小提示

如果你需要对created_at和updated_at设置不同的默认值,或者想要更明确的代码结构,也可以分开定义这两个字段:

class CreateCustomerOrders < ActiveRecord::Migration[6.0]
  def change
    create_table :customer_orders do |t|
      t.bigint :order_id
      t.string :customer_email
      t.datetime :created_at, default: -> { 'NOW()' }
      t.datetime :updated_at, default: -> { 'NOW()' }
    end
  end
end

这样写的好处是,后续如果只需要修改其中一个字段的默认值,会更直观方便。

内容的提问来源于stack exchange,提问作者Remy Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:47:41