数据库
首页 > 数据库> > 使用ActiveRecord和MySQL插入DATETIME

使用ActiveRecord和MySQL插入DATETIME

作者:互联网

我在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

谢谢.

解决方法:

您有created_at列,但是ActiveRecord没有创建时间戳吗?您created_at列的列类型是什么?也许您可以向我们展示您的迁移?

另外,如果您告诉Rails使用UTC(我认为是2.2的默认设置),则时间值将是正确的,而不管服务器的区域设置如何.

最后,您可以传递时间/日期/日期时间实例,而不必自己格式化.例如. YourModel.create(:a_time_column => Time.now)

标签:activerecord,ruby,datetime,mysql
来源: https://codeday.me/bug/20191108/2004541.html