我的搜索方法在使用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
答案 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()函数提取日期或日期/时间表达式的日期部分。
幸运的是,SQL
和postgresql
的工作方式相同。
建议之词:预测将用于托管的环境类型以及将支持/不会支持的环境是一种很好的做法,以便可以在易于复制错误和错误的开发环境。
我想说的是,如果托管环境将使用postgresql
,那么在开发环境中使用相同的postgresql
是一件好事。< / em>的