вместе с постами в ленту были данные о том, лайкнул ли пользователь каждый из данных постов. Как это сделать?
В чистом sql-е написал, но в самом приложении-то еще есть логика с фильтрацией, пагинацией, etc. Как можно это на AR перенести?
Чтобы получилась query такая, что можно к любом набору постов применить и получить для всех них еще и поле `did_i_like`
А то средствами рельсы в голову только вариант с N+1 приходит
SELECT posts.id,
posts.body,
CASE votes.vote_flag
WHEN TRUE THEN 1
WHEN FALSE THEN 0
ELSE 0
END AS did_i_like
FROM posts
JOIN users ON users.id = 1
LEFT JOIN votes ON votes.votable_id = posts.id
AND votes.voter_id = 1
GROUP BY did_i_like,
posts.id
ORDER BY posts.id ASC;
Тут 1 это типа id current_user'а
Обсуждают сегодня