Rails模型 - 检查DateTime对象是否在一天之内

时间:2015-05-16 11:20:52

标签: ruby-on-rails activerecord

我的模型ExchangeRates的字段time的类型为DateTime。我想从同一天搜索汇率。我尝试了以下方式:

  per = ExchangeRates.find_by(time: er.time.beginning_of_day..er.time.end_of_day)

但是,这并不会在同一天返回ExchangeRate对象。 我怎么能纠正这个?

2 个答案:

答案 0 :(得分:0)

使用where尝试此操作可能会更好,如下所示:

per = ExchangeRates.where("time > ? AND time < ?", er.time.beginning_of_day, er.time.end_of_day)

这会将您的请求直接转换为SQL。虽然它比我更喜欢ActiveRecord“ish”,但我找不到做一些搜索范围的简单方法。

如果你想要一些更干净的东西,你可以考虑使用猴子修补AR来支持range操作,这种操作可以通过传入的哈希来有效地完成这样的操作。

答案 1 :(得分:0)

这应该对你有用

per = ExchangeRates.where(time: er.time.beginning_of_day..er.time.end_of_day).first

但是,当我经常在模型上使用这种类型的查询时,我更喜欢复制数据,还使用日期列。

让我们说,如果我有一个created_at列,我还添加一个created_on列。一个具有日期时间类型,字母具有日期类型。