私のモデルでは、このカスタムSQLクエリを作成しました:
SELECT
training_courses.id,
training_courses.training_id,
training_courses.course_id,
training_courses.is_pre_test,
training_courses.order_by,
training_course_histories.id AS training_course_history_id,
training_course_histories.finished_at,
training_course_histories.score,
CAST(coalesce(user_training_courses.id, 0) as BOOLEAN) as purchased
FROM
training_courses
LEFT OUTER JOIN training_course_histories
ON training_course_histories.training_course_id = training_courses.id AND training_course_histories.id = (
SELECT th1.id
FROM training_course_histories th1
WHERE th1.training_course_id = training_courses.id
AND th1.finished_at IS NOT NULL
AND th1.user_id = 1
ORDER BY th1.finished_at DESC LIMIT 1
)
LEFT OUTER JOIN user_training_courses
ON user_training_courses.training_course_id = training_courses.id AND user_training_courses.id = (
SELECT th2.id
FROM user_training_courses th2
WHERE th2.training_course_id = training_courses.id
AND th2.user_id = 1
)
WHERE (training_courses.training_id = 1)
GROUP BY
training_courses.id,
training_courses.id,
training_courses.training_id,
training_courses.course_id,
training_courses.is_pre_test,
training_courses.order_by,
training_course_histories.id,
training_course_histories.finished_at,
training_course_histories.score,
user_training_courses.id
ORDER BY
order_by ASC,
id ASC,
training_courses.order_by ASC,
training_courses.id ASC
以前は、Mysqlデータベースを使用していたので、まったく問題ありません。クエリは次のようになりました。ISNULL(user_training_courses.id) as purchased
しかし今、私はPostgresを使用しており、CAST(coalesce(user_training_courses.id, 0) as BOOLEAN) as purchased
問題:Railsの場合、購入='t'または'f'(文字列)
私が欲しいもの:購入済み= trueまたはfalse(ブール値)
出来ますか ?
どうも。