我正在尝试编写一个数据库迁移,它将我的连接表中的datetime字段从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?
答案 0 :(得分:0)
你想用这个来完成什么?
日期时间列的默认值不能为true。
阅读规范:Migrations
Rails不支持迁移脚本中的动态默认值。因此,如果您想要当前时间,可以在模型级别轻松添加它们。
1)使用after_initialize
回调
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_at
和created_at
,ActiveRecord已经为您做了这件事。
因此您不必删除或更改这些列。
“还会添加Active Record自动填充的时间戳列created_at和updated_at。”来自Migrations
希望它有所帮助!
答案 1 :(得分:0)
试试这个
change_column :table_name, :created_at, :datetime, :null => true, :default => nil
并运行迁移