Порядок ActiveRecord по столбцам из нескольких таблиц - PullRequest
0 голосов
/ 24 октября 2018

Допустим, у меня есть модель пользователя

class User < ActiveRecord::Base
  has_many :posts
  has_many :comments
  ...
end

, а у обоих Post и Comment есть столбец created_at.

Как я могу заказать пользователей на основе последнихcreated_at столбец как posts, так и comments, объединенный с помощью ActiveRecord?

Я знаю, что могу использовать метод Ruby sort, но он слишком медленный.

1 Ответ

0 голосов
/ 24 октября 2018

Предполагается, что вы используете PostgreSQL:

# Users with most recently created posts/comments go first
User.left_outer_joins(:posts, :comments)
    .group('users.id')
    .order('GREATEST(MAX(posts.created_at), MAX(comments.created_at)) DESC')

# .. and go last
User.left_outer_joins(:posts, :comments)
    .group('users.id')
    .order('GREATEST(MAX(posts.created_at), MAX(comments.created_at)) ASC')

Для MySQL код выглядит так же.

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