Ruby on Rails: как отсортировать по двум столбцам с помощью ActiveRecord?

Я хочу отсортировать по двум столбцам, один - DateTime ( updated_at ), а другой - десятичное число (цена)

Я хотел бы иметь возможность сортировать сначала по updated_at, а затем, если в один и тот же день встречается несколько элементов, отсортировать по цене.

82
задан Arslan Ali 1 March 2016 в 09:18
поделиться

3 ответа

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

Model.all(:order => 'DATE(updated_at), price')

Обратите внимание на отличие от других ответов. Столбец updated_at будет полной временной меткой, поэтому, если вы хотите отсортировать на основе дня, он был обновлен, вам нужно использовать функцию, чтобы получить только часть даты из временной метки. . В MySQL это DATE().

61
ответ дан 24 November 2019 в 09:01
поделиться
Thing.find(:all, :order => "updated_at desc, price asc")

сделает свое дело.

Обновление:

Thing.all.order("updated_at DESC, price ASC")

это путь к Rails 3. (Спасибо @cpursley)

53
ответ дан 24 November 2019 в 09:01
поделиться
Model.all(:order => 'updated_at, price')
2
ответ дан 24 November 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: