我有一个范围可以从数据库中提取状态为open,已分配单位和transfer_date< = Date.today。
scope :open_calls, lambda { open_status.includes(:call_units).where(["call_units.unit_id IS NOT NULL"]).where("EXTRACT(DAY FROM transfer_date) <= ? AND EXTRACT(MONTH FROM transfer_date) <= ?", Date.today.day, Date.today.month).order("calls.id ASC") }
我遇到的问题是,如果我将电话的转移日期设置为今天晚上9:30,则电话不包含在范围内。我认为这与UTC /时区有关。我试图找出写这个范围的最佳方法是什么,所以我可以拉出所有调用&lt; = Date.today并显示正确的结果。
我在查询中使用postgres btw ergo EXTRACT。
答案 0 :(得分:0)
到目前为止,我已经使用了这个范围,并且能够在一天结束时将所有通话拉到今天。看起来它也适用于时区问题。
scope :open_calls, lambda { open_status.includes(:call_units).where(["call_units.unit_id IS NOT NULL"]).where("transfer_date <= ?", Time.zone.today.end_of_day) }