モデルを含むすべてのクエリで、Issue
その行に別の列を追加する必要があります。私の場合、この列は、課題の created_at 日付から合計 12 時間経過した場合 (営業時間: 午前 8:00 から午後 18:00、土曜と月曜を除く) はブール値です。
SELECT *, hours > 12 as alert FROM
(
SELECT *,
(SELECT count(*) - 1 AS work_hours
FROM generate_series ( created_at
, now()
, interval '1h') h
WHERE EXTRACT(ISODOW FROM h) < 6
AND h::time >= '08:00'::time
AND h::time < '18:00'::time) as hours
FROM issues
) as issues_with_alert
id
これにより、 、title
、 ...などのすべての問題列description
と、計算された列が返されます。alert
SQLビューissues_view
を作成し、モデルのテーブル名をビューのものに変更することを考えました。
self.table_name = "issues_view"
次に、ビューは列を継承するすべてのクエリを気にする必要がありalert
ます。
しかし、Rails はそのための準備が完全に整っていないようで、モンキー パッチを作成する必要があります。
http://mentalized.net/journal/2006/03/27/using_sql_server_views_as_rails_tables/ およびその他の問題を見つけました。
もう 1 つは、Issue
モデルにメソッドを実装することです。
def self.default_scope
end
しかし、SQLをその中に収める方法がわかりません。
レールでこれを達成する正しい方法は何ですか? 間違ったパターンや可読性の低さは避けたいです。
ありがとう!