2

这是我第一次使用 PostgreSQL 试用 Rails。timestamp with timezone我对我通常看到的关于存储绝对时间的列的代码中缺乏使用感到困惑。一个典型的例子是devisetimestamp with out timezone ,它将列存储在 PostgreSQL中转换为 a 的日期时间列。

我认为这是一种不好的做法,因为timestamp with out timezone可能意味着任何时区。如果您正在从另一个应用程序访问数据库,那么如果不查看 Rails ,您将不知道时间戳引用了哪个时区。它只是变成了一个分散的混乱。

我有什么方法可以timestamp with time zone在 ActiveRecord 迁移/模式中为 PostgreSQL 创建一个?会造成与当前 Rails 框架代码不兼容的问题吗?

我了解 ActiveRecord 试图与数据库无关,但这只是我不能忽视的一个小问题。

4

2 回答 2

2

I would suggest taking a look at this answer (very good explanation): Ignoring timezones altogether in Rails and PostgreSQL


UPDATE

According to ActiveRecord documentation, the above link, and my own tests - I have concluded that the default ActiveRecord datetime and timestamp column types in schema migrations cannot be modified to force PostgreSQL to use timestamp with time zone.

PostgreSQL Documentation:

Note: The SQL standard requires that writing just timestamp be equivalent to timestamp without time zone, and PostgreSQL honors that behavior. (Releases prior to 7.3 treated it as timestamp with time zone.) timestamptz is accepted as an abbreviation for timestamp with time zone; this is a PostgreSQL extension.

http://www.postgresql.org/docs/9.1/static/datatype-datetime.html

于 2012-07-30T00:01:07.787 回答
0

我们可以使用这个gem 来覆盖配置并使用适配器特定的数据类型。

于 2015-01-13T10:36:14.317 回答