0

我正在尝试编写一个数据库迁移,将我的连接表中的日期时间字段从 null 更改为 true,但有些东西不能正常工作。这是我的代码:

class ChangeDateColumnsInCirclesUsers < ActiveRecord::Migration
  def change
    change_column :circles_users, :created_at, :datetime, :null => true
    change_column :circles_users, :updated_at, :datetime, :null => true
  end
end

这是行不通的。关于如何将这些空值设置为 true 而不是 false 的任何想法?

4

2 回答 2

1

尝试这个

change_column :table_name, :created_at, :datetime, :null => true, :default => nil

并运行迁移

于 2012-10-26T10:41:04.510 回答
0

你想用这个来完成什么?

日期时间列不能将其默认值设置为 true。

阅读规范:迁移


Rails 不支持迁移脚本中的动态默认值。因此,如果您想要当前时间,您可以轻松地在模型级别添加它们。

after_initialize1) 使用回调设置默认值

class Test
  def after_initialize
    self.day ||= Date.today if new_record?
  end
end

t = Test.new
t.day # will return today's date
t.save
t.day # will return today's date

编辑:

在评论中,我们发现您不必担心填充,updated_atcreated_atActiveRecord 已经为您完成了。

因此,您不必删除或更改这些列。

“Active Record 自动填充的时间戳列 created_at 和 updated_at 也将被添加。” 从迁移

希望能帮助到你!

于 2012-10-26T10:16:03.237 回答