【发布时间】:2015-11-11 16:42:32
【问题描述】:
我对使用 Rails 的 PostgreSQL 有疑问。我有一张日期时间“从”和“到”的表。在我的控制器中,我得到了以下信息:
@running = Model.where("'to' > ?", Time.now)
@finished = Model.where("'to' < ?", Time.now)
我已经知道我必须转义“to”,因为它是一条 SQL 语句。现在的问题是,使用 MySQL 和 SQLite,我可以使用 ` 对其进行转义,因此在我的开发环境 (sqlite) 中,它可以使用:
.where("`to` > ?", Time.now)
它实际上在应用程序中工作正常。
但是我的生产环境是 Postgres,而 Postgres 不支持 ``,并且 '' 显然不起作用,因为“to”条目是什么并不重要,它总是显示 @running 一个,即使应该是@finished。
怎么了?
谢谢!!
【问题讨论】:
-
您是否尝试使用 table_name:
Model.where("table_name.to > ?", Time.now)? -
如果我是你,我只会更改列名并省去很多麻烦。
-
首先,有什么东西会比
Time.now更大?其次,为什么不使用Model.where(to: Time.now..5.years.ago)或您实际尝试展示的任何范围?
标签: ruby-on-rails ruby database postgresql rails-activerecord