搜索查询无法在heroku上运行

时间:2015-11-13 22:59:41

标签: ruby-on-rails activerecord

我的搜索方法在使用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

1 个答案:

答案 0 :(得分: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是一件好事。< / em>的