Rails created_at 不自动保存原因

hastings · 发布于 2016年11月29日 · 最后由 hastings 回复于 2016年12月06日 · 627 次阅读
4618

背景

项目用的是一个复杂的数据库,这个数据库供不同语言,不同项目组使用。 在使用的过程中发现有些表创建记录时会自动保存created_at时间,有些不会,当时工期紧以为created_at字段赋值的方式解决这个问题。

原因

在对比过两种不同情况的表后发现,会自动保存的表,created_at字段的默认值是nil,不会自动保存的有其他默认值。通过调试后确认是created_at的默认值影响了自动填充的功能

解决

将不会自动填充created_at时间的表的created_at字段的默认值都改为nil

共收到 4 条回复
17671

第一次碰到把created_at设默认值的😂

27349

创建后默认的都为自动保存.. @hastings 这个数据库供不同语言,不同项目组使用,这个应该不是原因吧?

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.timestamps
    end
  end
end
25402

遇到过这种坑,数据库中若设置默认值,Model.new 出来的对象就有了这些默认值,model 中再设置默认值或检测是否设置了值时就容易踩坑。

所以慎用数据库的默认值。

4618

#2楼 @sec 数据库多项目多语言同时使用,表不一定是我们创建的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册