Ruby on rails Rails ActiveRecord,在Postgres中插入默认字段值

Ruby on rails Rails ActiveRecord,在Postgres中插入默认字段值,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,这应该很简单,但我已经在谷歌上搜索了不少 我正在尝试为我的rails应用程序创建数据库日志。日志是一个postgres表,它有一个时间戳字段,我给了它一个默认值,即当前时间戳。这在原始SQL中非常有效,如果我将timestamp字段保留在INSERT查询之外,它将正确获取当前时间戳 在轨道上我有 entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB' entry.save (LogTable扩展了ActiveRecord:

这应该很简单,但我已经在谷歌上搜索了不少

我正在尝试为我的rails应用程序创建数据库日志。日志是一个postgres表,它有一个
时间戳
字段,我给了它一个
默认值
,即
当前时间戳
。这在原始SQL中非常有效,如果我将
timestamp
字段保留在
INSERT
查询之外,它将正确获取当前时间戳

在轨道上我有

entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB'
entry.save
(LogTable扩展了ActiveRecord::Base)

这将导致一个包含所有字段的
INSERT
查询,包括设置为
NULL
timestamp
字段,这是数据库不允许的,因此它会出错


我尝试过设置
:timestamp=>“当前时间戳”
:timestamp=>“默认值”
,但最后都试图将其设置为
NULL

您当前的时间戳是否就是当前的日期/时间?如果是这样的话,您可以保持简单,并执行以下操作:

entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB', :timestamp => Time.now

如果是更复杂的问题,并且您确实希望使用DB端默认值,则此页面可能会有所帮助:。

您当前的时间戳是否只是当前的日期/时间?如果是这样的话,您可以保持简单,并执行以下操作:

entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB', :timestamp => Time.now

如果是更复杂的内容,并且您确实希望使用DB端默认值,则此页面可能会有所帮助:。

我假设这不起作用,因为该字段实际上是一个postgres
DATETIME\u WITH\u TIMEZONE
字段,而不仅仅是一个简单的unix时间戳。我要到明天早上才能检查,但是谢谢你的输入。应该可以,因为它与我从这里推断的基本相同:。您可能需要执行
Time.zone.now
而不是
Time.now
,尽管我怀疑(如果我理解正确,将转换为UTC)。不过,您可能需要进行实验。我假设这不起作用,因为该字段实际上是一个postgres
DATETIME\u WITH\u TIMEZONE
字段,而不仅仅是一个简单的unix时间戳。我要到明天早上才能检查,但是谢谢你的输入。应该可以,因为它与我从这里推断的基本相同:。您可能需要执行
Time.zone.now
而不是
Time.now
,尽管我怀疑(如果我理解正确,将转换为UTC)。不过,你可能还需要进行实验。