Подтвердить что ты не робот

Сортировка по возрастанию

Привет, у меня есть эта модель

Элемент модели

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 имеет имя элемента = окно  
4b9b3361

Ответ 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