Сортировка по возрастанию
Привет, у меня есть эта модель
Элемент модели
class Inventory::Item < ActiveRecord::Base
has_many :types, :class_name => "ItemType"
attr_accessible :name
end
Model_ item_type
class Inventory::ItemType < ActiveRecord::Base
belongs_to :item
attr_accessible :number
end
тогда скажем в контроллере, я хочу сортировать типы (которые имеют класс ItemType) в порядке возрастания в зависимости от имени элемента. Как это сделать?
Например,
-
- ItemType number = 1 имеет имя элемента = Таблица
- ItemType number = 2 имеет Item name = Chair
- ItemType number = 3 имеет имя элемента = окно
- ItemType number = 4 имеет имя элемента = компьютер
Поэтому вместо сортировки из числа, я хочу, чтобы он отсортировался на основе item.name(ASC) следующим образом:
-
- ItemType number = 2 имеет Item name = Chair
- ItemType number = 4 имеет имя элемента = компьютер
- ItemType number = 1 имеет имя элемента = Таблица
- ItemType number = 3 имеет имя элемента = окно
Ответы
Ответ 1
Что-то вроде этого должно сделать трюк...
ItemType.includes( :item ).order( 'inventory_items.name DESC' )
Кроме того, если вам нужно сделать это во многих местах, вы можете сделать то же самое, предоставив параметр :order
для вашего вызова has_many
, вместо этого - http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many.
Ответ 2
Чтобы извлечь записи из базы данных в определенном порядке, вы можете использовать метод order
:
Item.order(:name)
по умолчанию это сортирует по возрастанию.
Ответ 3
Вы также можете установить порядок по умолчанию в своей модели следующим образом:
default_scope order("#{self.table_name}.item_name ASC")
Это будет сортировать элементы по элементу item_name без каких-либо изменений в контроллере
Ответ 4
Для создания ASC (режим сортировки по умолчанию) для полей типа имени (алфавиты),
You can use ORDER BY Clause in MySQL
Следовательно, In Rails вы можете просто использовать
Model.order(:field_name)
Ответ 5
В вашем запросе вы можете использовать /add ORDER BY itemType ASC