以下に示すカスタム SQL 文字列 (postgres データベースを使用) を使用する Rails アプリがあります。その文字列は正常に機能します。過去 7 日以内に作成された answer_votes、best_answers、および投稿からのみレコードを取得するように、クエリに時間条件を追加しようとしています。したがって、今日の日付を取得し、7 日を減算します。
date = Date.today - 7
以下のSQL文字列のステートメントをこのようなものに置き換えました
(select Coalesce(sum(value),0) from answer_votes where (answer_votes.user_id = users.id) AND (answer_votes.created_at <= #{date}))
しかし、それは私にいくつかのエラーを与えています
PG::Error: ERROR: operator does not exist: timestamp without time zone <= integer
これを行う正しい方法を教えてもらえますか。answer_votes の試行のみを示しましたが、best_answers と貢献についても同じことを試みますが、解決策は同じになります (推測します)。
sql_string = "with cte_scoring as (
select
users.id, users.name, users.email,
(select Coalesce(sum(value),0) from answer_votes where answer_votes.user_id = users.id) +
(select Coalesce(sum(value),0) from best_answers where best_answers.user_id = users.id) +
(select Coalesce(sum(value),0) from contributions where contributions.user_id = users.id) total_score
from
users join
contacts on (contacts.user_id = users.id)
where
users.lawyer = 'true')
select id,
name,
email,
total_score
from cte_scoring
order by total_score desc
limit 2 "