У нас есть locations
, что has_many
images
и images
belongs_to
a User
.Я хочу получить все отдельные места, в которых пользователь сделал фотографию, в порядке created_at
на изображениях.Я хотел бы попытаться выполнить это как один запрос, но я не смог найти способ, как это работает.
Я пытался изменить Location.joins(:images).where(images: { creator: user }).order('images.date_uploaded DESC').distinct
, но они приводят к ошибкам, таким как:
ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...ype" = $1 AND "images"."creator_id" = $2 ORDER BY images.dat...
или неуникальные результаты.
Похоже, если я использую uniq
, тогда он возвращает правильные результаты, но я считаю, что необходимо загружать записи из БД в массив для их uniq.
Обновление 1
Я пытался использовать SQL (в котором я не эксперт), используя следующиезапрос:
SELECT DISTINCT(locations.id), images.date_uploaded, images.id FROM locations
JOIN images on locations.id = images.location_id
WHERE images.creator_type = 'User'
AND images.creator_id = 105
ORDER BY images.date_uploaded, images.id
Но я все еще получаю дубликаты.