Еще один способ добиться этого:
scope :ordered, -> { includes(:availabilities).order(Availability.arel_table[:price]) }
Вы также можете указать ASC
направление с помощью
scope :ordered, -> { includes(:availabilities).order(Availability.arel_table[:price].asc) }
DESC
scope :ordered, -> { includes(:availabilities).order(Availability.arel_table[:price].desc) }
Использование arel_table
в модели ActiveRecord
позволяет сэкономить на сценарии при изменении имени таблицы (но это происходит очень редко).
Обратите внимание, что было бы неплохо добавить main_table#id
для детерминированной сортировки.
Таким образом, окончательная версия будет:
scope :ordered, -> {
includes(:availabilities).
order(Availability.arel_table[:price].asc, order(Home.arel_table[:id].asc)
}