我的模型ExchangeRates
的字段time
的类型为DateTime
。我想从同一天搜索汇率。我尝试了以下方式:
per = ExchangeRates.find_by(time: er.time.beginning_of_day..er.time.end_of_day)
但是,这并不会在同一天返回ExchangeRate对象。 我怎么能纠正这个?
答案 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列。一个具有日期时间类型,字母具有日期类型。