【问题标题】:Search query wont work on heroku搜索查询不适用于heroku
【发布时间】:2015-11-13 22:59:41
【问题描述】:

我的这种搜索方法在我使用 Sqlite3 的本地计算机上运行良好,但不适用于使用 pg 的 Heroku。我有什么更好的方法可以编写此方法以在两者上很好地工作。

def self.search(origin, destination, departure_date)
  departure_date = "#{departure_date}%"
  Flight.where("origin_id = ? AND destination_id = ? AND departure_date LIKE ?", origin, destination, departure_date)
end

【问题讨论】:

标签: ruby-on-rails activerecord


【解决方案1】:

我猜您这样做是因为您不想在查询中包含时间戳?因为您只想匹配departure_date 列上的日期?

如果是这种情况,一个可靠的方法是使用 sql date 函数来获取你的日期部分 date + timestamp

这样,您可以执行以下操作:

def self.search(origin, destination, departure_date)
  Flight.where("origin_id = ? AND destination_id = ? AND date(departure_date) = ?", origin, destination, departure_date)
end

(假设departure date 是字符串格式的有效日期)。

这是从SQL documentation on the date function 看到的。

DATE() 函数提取日期或日期/时间表达式的日期部分。

幸运的是,SQLpostgresql 的工作方式相同。

忠告,但是:预测将用于托管的环境类型以及支持/不支持的环境类型是一种很好的做法,以便可以在开发环境中模拟这些条件便于复制错误和错误。

我想说的是,如果托管环境将使用postgresql,那么在您的开发环境中使用相同的postgresql 是一件好事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多