考虑下面的表创建脚本:

create_table :foo do |t|
  t.datetime :starts_at, :null => false
end

是否可以将默认值设置为当前时间?

我试图在rails中为下面给出的SQL列定义找到一个与DB无关的等价项:

Oracle Syntax

start_at DATE DEFAULT SYSDATE() 

MySQL Syntax

start_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

start_at DATETIME DEFAULT NOW()

推荐答案

Rails 5现在支持这一点.

下面是一个迁移示例:

class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :posts do |t|
      t.datetime :modified_at, default: -> { 'CURRENT_TIMESTAMP' }
      t.timestamps
    end
  end 
end

参见第https://github.com/rails/rails/issues/27077页的讨论,并由prathamesh sonpatki回答

Ruby-on-rails相关问答推荐

Rails 7通过引擎将方法自动加载到控制器中的方法

本地主机的上衣配置

为什么这个rails Collection_select不呈现关联属性?

Rails 使用多个外键创建/构建

ActiveRecord 错误地转义 JSON 字符串

在 Datatable Ajax 调用中通过 Ajax 更新 div

Rails ActiveRecord 中的更新插入

如何从 Rails 路由中删除控制器名称?

使用 RVM 时如何安装 Ruby gem?

如何在 Rails 中使用 instance_eval 子句删除验证?

对于 Visual Studio 用户来说,最好的 Ruby on Rails 环境是什么?

从控制器中删除 Cookie

如何使用失败try 次数使设计可锁定

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

activerecord 查找所有未包含在数组中的内容

如何在 Ruby 中生成随机日期?

控制器 helper_method

您推荐哪些工具来分析 Rails 应用程序?

Rails 3 返回 HTTP 406 Not Acceptable?

警告:运行 ruby​​ 或 gem 命令时不安全的世界可写目录