2013-05-09 6 views
21

Witam mam temu modelowiSortowanie w porządku rosnącym Rails

element modelu

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 

pozwól powiedzieć kontroler chcę, aby posortować typy (który ma klasy itemtype) w porządku rosnącym na podstawie nazwy przedmiotu. Jak mogę to zrobić?

Przykładowo

  • ItemType liczba = 1 nosi nazwę produkt = Tabela
  • ItemType = numer 2 posiada nazwę artykułu = Krzesło
  • ItemType = numer 3, o nazwie Element = Okno
  • ItemType = numer 4 ma nazwę Rzecz = Computer

Więc zamiast sortowania to od liczby, chcę to sortowane na podstawie item.name (ASC) tak:

  • ItemType = numer 2 ma nazwę przedmiotu = Krzesło
  • ItemType = numer 4 ma Nazwa elementu = Computer
  • ItemType = numer 1 ma nazwę Item = Tabela
  • ItemType = numer 3 ma Nazwa elementu = Okno

Odpowiedz

-2

w zapytaniu można użyć/dodać ORDER BY itemType ASC

15

Aby pobrać rekordy z bazy danych w określonej kolejności, można użyć order method:

Item.order(:name) 

domyślnie ta sortuje rosnąco.

0

Do tworzenia ASC dla nazwy rodzaju pól (alfabety) (domyślny tryb sortowania),

You can use ORDER BY Clause in MySQL 

Stąd w Rails można po prostu użyć

Model.order(:field_name) 
1

Można również ustawić domyślną kolejność Twój model taki jak ten:

default_scope order("#{self.table_name}.item_name ASC") 

Spowoduje to posortowanie elementów według item_name bez żadnych zmian w kontrolerze