Как отсортировать по «дате, связанной»? - PullRequest
0 голосов
/ 07 марта 2019

A User имеет много Airports, хотя Preferences.

Я хочу отобразить аэропорты, отсортированные по «первым добавленным» в их предпочтениях. Как мне это сделать? Поскольку аэропорты являются «статической» базой данных, их created_date не имеет значения. Мы ищем что-то вроде associated_date.

Полагаю, мне нужно найти ассоциацию в таблице соединений и получить ее created_date.

Я уверен, что могу понять это. Но есть ли у кого-нибудь решение под рукой?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Предполагая, что вы хотите airports для @current_user, отсортированного по created_at дате preferences, которая присоединяет airports к @current_user (вот так!) ...

И при условии, что:

class Airport < ApplicationRecord
  has_many :preferences
end

Я считаю, что вы хотите что-то вроде:

@current_user.aiports.joins(:preferences).order(preferences: {created_at: :asc})

или :desc, в зависимости от ваших потребностей.

Это не проверено, поэтому вам, возможно, придется немного поиграться с ним.

1 голос
/ 07 марта 2019

Вы ищете что-то подобное?

Preference.where.not(airport_id: nil).order(created_at: :asc)

Это вернет вам все экземпляры Preference с airport_id в порядке возрастания.

Кроме того, это может помочь вамтоже:

Порядок следования рельсов по полю связи

Подход, основанный на этой ссылке, будет следующим:

Airport.joins(:preferences).merge(Preference.order(created_at: :asc))

Это предполагает, что у вас естьу традиционного есть множество через ассоциацию, установленную между User, Airport и Preference.

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