Rails ActiveRecord,在Postgres中INSERT默认字段值

时间:2013-02-28 18:12:55

标签: ruby-on-rails postgresql activerecord

这应该是一个简单的,但我已经google了一下。

我正在尝试为我的rails应用程序创建数据库日志。该日志是一个postgres表,其中包含timestamp字段,我已DEFAULT current_timestamp。这在原始SQL中非常有效,如果我从timestamp查询中删除INSERT字段,它会正确获取当前时间戳。

我有轨道;

entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB'
entry.save

(LogTable扩展ActiveRecord :: Base)

这导致INSERT查询包含所有字段,包括设置为timestamp的{​​{1}}字段,数据库不允许这样做错误。

我已尝试设置NULL:timestamp => 'current_timestamp'但最终都试图将其设置为:timestamp => 'DEFAULT'

1 个答案:

答案 0 :(得分:1)

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

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

如果它更复杂并且你真的想使用数据库端默认值,那么这个页面可能有所帮助:http://drawohara.com/post/6677354/rails-activerecord-default-values