1

ステータスがオープンで、ユニットが割り当てられ、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/タイムゾーンに関係していると思います。このスコープを作成するための最良の方法を見つけようとしています。これにより、すべての呼び出し<= Date.todayをプルして、正しい結果を表示できます。

クエリでpostgresbtwergoEXTRACTを使用しています。

4

1 に答える 1

0

これまでのところ、私はこのスコープを使用しており、1 日の終わりに今日までのすべての通話をプルすることができました。タイムゾーンの問題にも対応しているようです。

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) }
于 2013-01-14T21:00:51.957 に答える