所以目前我遇到的问题是我通过客户端的API从xml文件填充数据库。每条记录都有一个到期日期,格式如下:
<offer_ends_at>2010-10-20T07:59:59-04:00</offer_ends_at>
现在,我需要运行一个查询,我只能获得将来有效的记录。我目前的代码是:
@deals = Deal.where(["city = :city AND status = 'live' AND DATETIME(date_expires) >= DATETIME(:time)", { :city => @city.id, :time => Time.now }])
当我正在录制时,我使用了这个:
@deal.date_expires = DateTime.parse((entry/"offer_ends_at").inner_html)
这就是我获取日期时间并格式化的方式。
这是我在的地方:
我只需要确保我只显示未过期的记录。经过两天的淘网和没有工作的答案,我决定在这里问。在此先感谢:)
答案 0 :(得分:1)
答案是我的代码实际上并不是很糟糕。出现的问题是我没有正确地将输入日期格式化为运行查询时可以理解的内容。只需将我的查询从Time.now更改为Time.now.parse即可。
答案 1 :(得分:0)
ActiveRecord构建在Arel库之上,因此我们可以使用它来进行更明确的查询。
t = Deal.arel_table
@deals = Deal.where(city: @city.id, t[:time].gt(1.second.ago))
这将在未来获得所有优惠。