Как заказать по убыванию две переменные в рельсах? - PullRequest
0 голосов
/ 10 июля 2020

Я написал такой запрос

@data = Data.where(value: params[:value]]).order(created_at: desc)
data1 = Result.where(value: params[:value]]).order(created_at: desc)
if data1?present  
  @data << data1
end

Теперь я хочу, чтобы значения @data и data1 были отсортированы в убывающем порядке от updated_at?

Как я могу это сделать?

Заранее спасибо ....

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

По убыванию

@data = (Data.where(value: params[:value]]).order(created_at: desc) + Result.where(value: params[:value]]).order(created_at: desc)).sort_by(&:updated_at).reverse

По возрастанию

@data = (Data.where(value: params[:value]]).order(created_at: desc) + Result.where(value: params[:value]]).order(created_at: desc)).sort_by(&:updated_at)
0 голосов
/ 10 июля 2020

Поскольку вы выбираете данные из двух разных таблиц, вы не можете выполнять сортировку на уровне базы данных (по крайней мере, это нетривиально). Я предлагаю вам использовать sort_by

@data = Data.where(value: params[:value]]).order(created_at: desc) + 
  Result.where(value: params[:value]]).order(created_at: desc)

@data.sort_by {|element| -element.updated_at }

Обратите внимание, что вам нужно использовать +, а не <<.

Может также взглянуть на kaminari ( https://github.com/kaminari/kaminari).

https://www.rubyguides.com/2017/07/ruby-sort/

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