объединить результаты двух запросов и упорядочить по созданному?[рельсы 3] - PullRequest
16 голосов
/ 09 июля 2011

В поисках простого метода, использующего активную запись, чтобы получить данные из двух моделей, объединить данные и затем отсортировать объединенный вывод по create_at.

Например:

предположим, две модели, комментарий и как принадлежат пользователю

возвращает объединенный список @ комментариев пользователя и лайков, отсортированных по дате

Я знаю, что могу сделать это в SQL, но мне бы очень хотелось, чтобы решение для активной записи.

Спасибо!

Ответы [ 2 ]

23 голосов
/ 09 июля 2011

Я считаю, что это должно быть так просто, как:

combined_sorted = (User.comments + User.likes).sort{|a,b| a.created_at <=> b.created_at }
0 голосов
/ 09 июля 2011

Как насчет чего-то вроде (не проверено):

class User < ActiveRecord::Base
  scope :activities_by_date, :joins(:comments).joins(:likes).order("created_at desc")
end

Тогда вы можете сделать @user.activities_by_date и позволить БД сделать всю работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...