Rails: получение последней метки времени от нескольких детей в ассоциации - PullRequest
0 голосов
/ 30 августа 2018

У моего родительского объекта есть два дочерних объекта.

У каждого из них есть метки времени updated_at и views_at.

т.е. объект person с некоторыми ассоциациями has_many / own_to

Books: updated_at, viewed_at

Videos: updated_at, viewed_at

Я бы хотел запрос, который получает последние четыре из этих запросов. т.е.

Person.getAllBooksAndVideos.pluck(:updated_at, :viewed_at).sort{|a,b| [a.updated_at, a.viewed_at].compact.max <=> [b.updated_at, b.viewed_at].compact.max}.last Я не знаю, как выполнить часть getAllBooksAndVideos.pluck(:updated_at, :viewed_at), и любые советы очень, очень приветствуются.

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете сопоставить все результаты ассоциаций в массиве и вызвать на нем sort_by.

result = (person.books + person.videos).sort_by {|x| [x.updated_at, x.viewed_at]}.last

Тогда вы сможете получить доступ к результату следующим образом:
result.updated_at # This should give you your updated_at date
result.viewed_at # This should give you your viewed_at date

...