使用ActiveRecord和MySQL插入日期时间

3

我在使用ActiveRecord插入DATETIME时遇到了问题,根据文档的描述:“如果表有名为created_at/created_on或updated_at/updated_on的字段,则Active Record会自动对创建和更新操作进行时间戳处理。” 我有一个名为created_at的列,但ActiveRecord没有插入DATETIME。我的插入查询如下:

def add_record(server_id, backup_type)
  Record.create(:server_id => server_id, :backup_type => backup_type)
end

我知道可以使用如下方式插入时间:

:created_at => "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"

我希望避免这样做的原因是由于服务器之间的时间差异,无论是本地还是地理上的。我想知道是否有一种方法可以在同一个create方法中运行该类型,例如:

def add_record(server_id, backup_type)
  Record.create(:server_id => server_id, :backup_type => backup_type, created_at => DATETIME())
end

谢谢。
2个回答

3
你有一个created_at列,但ActiveRecord没有创建时间戳?你的created_at列的列类型是什么?也许你可以给我们展示你的迁移文件?
另外,如果你告诉Rails使用UTC(我认为默认值是2.2),那么无论不同服务器的语言环境如何,时间值都将是正确的。
最后,你只需要传递一个时间/日期/日期时间实例,不需要自己格式化。例如:YourModel.create(:a_time_column => Time.now)

由于某种原因,我正在执行CallLog.callstart = Date.new。这将值设置为0000-00-00 00:00:00。根据这个答案,我将其更改为CallLog.callstart = Time.now,现在感觉好多了。 - Kinjal Dixit

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接