У меня есть фотографии с комментариями.
Я хочу выбрать любые фотографии с недавними комментариями и отображать эти фотографии в виде «временной шкалы», где самая последняя закомментированная фотография находится вверху, а остальные фотографии опускаются ниже.
Я попробовал это, и он работал на SQLite:
@photos = Photo.select('DISTINCT photos.*').joins(:comments).order('comments.created_at DESC')
Однако тестирование на PostgreSQL вызывает эту ошибку:
PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
\n: SELECT DISTINCT photos.* FROM \"photos\" INNER JOIN \"comments\" ON \...
Итак, проблема в том, что я выбираю фотографии, но упорядочиваю по актуальности комментариев ... и Postgre это не нравится.
Может кто-нибудь предложить либо:
A: Как я могу исправить этот запрос ...
или
Б: Другой способ получения фотографий по актуальности их комментариев?
Важная причина, по которой я делаю это таким образом, а не с помощью модели комментариев, заключается в том, что я хочу показать каждую фотографию один раз с любыми последними комментариями рядом с ней, а не показывать каждый комментарий сам по себе, когда одни и те же фотографии появляются несколько раз.
Спасибо!