这应该是一个简单的方法,但我已经在Google上搜索了一些。Rails ActiveRecord,Postgres中的INSERT默认字段值
我想为我的rails应用程序创建一个数据库日志。日志是一个postgres表,其中有一个timestamp
字段,我给出DEFAULT
的current_timestamp
。如果我将timestamp
字段从我的INSERT
查询中删除,它将在原始SQL中完美工作,它会正确获取当前时间戳。
在铁轨上,我有;
entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB'
entry.save
(LogTable延伸的ActiveRecord :: Base)中
导致包含所有领域,包括timestamp
字段设置为NULL
,这是不是数据库所允许的INSERT
查询,以便它错误。
我试过设置:timestamp => 'current_timestamp'
和:timestamp => 'DEFAULT'
,但最终都试图将其设置为NULL
。
我认为这是行不通的,因为这个字段实际上是一个postgres'DATETIME_WITH_TIMEZONE'字段,而不仅仅是一个简单的unix时间戳。我无法检查,直到明天早晨,但感谢您的意见。 – lynks 2013-02-28 19:33:50
应该可以工作,因为它基本上与我从这里推断的一样:http://stackoverflow.com/questions/9571392/ignoring-timezones-altogether-in-rails-and-postgresql/9576170#9576170。你可能需要做'Time.zone.now'而不是'Time.now',尽管我怀疑(如果我理解的话,将会被转换为UTC)。你仍然需要尝试。 – moonfly 2013-02-28 19:44:30