在我的模型中,我制作了这个自定义 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' (字符串)
我想要什么:购买=真或假(布尔值)
可能吗 ?
谢谢。