У меня есть небольшой пример приложения Rails под названием tickets, который просматривает и редактирует вымышленные билеты, продаваемые различным клиентам. В tickets_controller.rb, внутри def index
, у меня есть эта стандартная строка, сгенерированная скаффолдингами:
@tickets = Ticket.find(:all)
Чтобы отсортировать билеты по имени, я нашел два возможных подхода. Вы можете сделать это следующим образом:
@tickets = Ticket.find(:all, :order => 'name')
... или так:
@tickets = Ticket.find(:all).sort!{|t1,t2|t1.name <=> t2.name}
(Совет: документация Ruby объясняет, что sort!
изменит массив, который он сортирует, в отличие от одного sort
, который возвращает отсортированный массив, но оставляет оригинал без изменений).
Какую стратегию вы обычно используете? Когда вы могли бы использовать .sort!
против синтаксиса :order => 'criteria'
?