Rails created_at 不自动保存原因

hastings · 2016年11月29日 · 最后由 hastings 回复于 2016年12月06日 · 1799 次阅读

背景

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

原因

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

解决

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

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

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

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

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

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

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

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