我的搜索方法在使用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
我猜您正在这样做,是因为您不想在查询中包括时间戳?因为您只想匹配departure_date
列上的日期?
在这种情况下,一种可靠的方法是使用sqldate
函数获取日期中的日期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文档中date
可以看出。
DATE()函数提取日期或日期/时间表达式的日期部分。
幸运的是,这SQL
和和的工作方式相同postgresql
。
建议:但是,最好的做法是预见将用于托管的环境类型以及将/将不支持的环境,以便可以在开发环境上模拟这些条件,从而轻松地复制错误和错误信息。错误。
我要说的是,如果将使用托管环境,那么在您的开发环境中postgresql
使用相同postgresql
的环境将是一件好事。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句