Как получить последние записи в зависимости от внешнего ключа

Я использую рельсы с postgres. У меня есть таблица под названием «попытки», которая принадлежит таблице «пользователи». Я хочу получить все попытки, но показать только последнюю попытку для каждого пользователя.

Итак, я хочу, чтобы код выглядел примерно так:

Attempt.group(:user_id).having('latest(created_at)')

Приведенный выше код не работает.


person sonnyhe2002    schedule 11.11.2013    source источник
comment
см. здесь: stackoverflow.com/questions/4255286/   -  person tommyd456    schedule 11.11.2013
comment
Хорошо, мне не нужно использовать группу, но мне просто нужен запрос, который возвращает попытку, если это последняя попытка для этого ученика. За набор попыток   -  person sonnyhe2002    schedule 11.11.2013
comment
Может быть что-то вроде: Attempt.where(:user_id => user_id).order("created_at DESC").first   -  person tommyd456    schedule 11.11.2013
comment
не проверял это, так что попробуйте - я уверен, что кто-то еще вмешается, если я ошибаюсь   -  person tommyd456    schedule 11.11.2013
comment
Я не думаю, что вы правильно интерпретируете вопрос. В результате мне нужен массив активных записей, где каждая попытка должна иметь уникального пользователя, и эта попытка является последней попыткой для этого пользователя.   -  person sonnyhe2002    schedule 12.11.2013
comment
ааа, ты получил ответ спустя 6 лет?   -  person Benjamints    schedule 16.09.2019


Ответы (1)


Я не знаю Rails, но может быть, что «последняя» не существует в Postgresql. Можно попробовать с ...having('max(created_at)')

В противном случае это должно выполнить задание:

sql = "Select user_id, max(created_at) from attempt group by user_id"
records_array = ActiveRecord::Base.connection.execute(sql)

Источник вдохновения

person Le Droid    schedule 12.11.2013