1

这应该是一个简单的,但我用谷歌搜索了一下。

我正在尝试为我的 rails 应用程序创建数据库日志。日志是一个 postgres 表,它有一个timestamp字段,我给出DEFAULTcurrent_timestamp. 这在原始 SQL 中完美运行,如果我将timestamp字段排除在INSERT查询之外,它会正确获取当前时间戳。

在铁轨上我有;

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

(LogTable 扩展 ActiveRecord::Base)

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

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

4

1 回答 1

1

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

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

如果它更复杂,并且您真的想使用 DB 端默认值,此页面可能会有所帮助:http ://drawohara.com/post/6677354/rails-activerecord-default-values 。

于 2013-02-28T19:31:18.597 回答