【发布时间】:2012-09-11 22:05:49
【问题描述】:
我正在使用 Rails 3.2.7 和 Postgres 9.2 尝试创建日期范围
这就是我的创作方式
schedule_block = ScheduleBlock.new
schedule_block.date_range = [Date.new, Date.new]
schedule_block.save
这是结果查询和错误:
INSERT INTO "schedule_blocks" ("date_range") VALUES ($1) RETURNING "id" [["date_range", [Mon, 01 Jan -4712, Mon, 01 Jan -4712]]]
PG::Error: ERROR: malformed range literal: "---
- -4712-01-01
- -4712-01-01
"
DETAIL: Missing left parenthesis or bracket.
: INSERT INTO "schedule_blocks" ("date_range") VALUES ($1) RETURNING "id"
(0.1ms) ROLLBACK
Completed 500 Internal Server Error in 496ms
我怎样才能做到这一点?
【问题讨论】:
-
很好的问题,就是来问这个的。您在迁移中使用了什么?
-
add_column :table_name, :col_name, :daterange
-
psql 是 PostgreSQL 的命令行客户端,有自己的标签。不要将它与 PostgreSQL(或简称 Postgres)混淆。我修好了。
-
Rails 不知道 daterange 是什么的问题?就像它不知道间隔是什么一样。因此,您不需要适当地转换为字符串吗?查看错误是什么,看起来它只是将您的日期数组转储到 sql... 这显然是无效的。
标签: ruby-on-rails ruby-on-rails-3 postgresql postgresql-9.2 range-types