2013-05-09 15 views
21

Ciao ho questo modelloOrdina in ordine crescente Rails

voce Modello

class Inventory::Item < ActiveRecord::Base 
    has_many :types, :class_name => "ItemType" 
    attr_accessible :name 
end 

Modello item_type

class Inventory::ItemType < ActiveRecord::Base 
    belongs_to :item 
    attr_accessible :number 
end 

poi diciamo controller voglio ordinare i tipi (che ha classe ItemType) in ordine crescente in base al nome dell'articolo. Come lo faccio?

Ad esempio,

  • ItemType numero = 1 ha Itemname = Tabella
  • ItemType numero = 2 ha Itemname = Sedia
  • ItemType numero = 3 ha Itemname = Finestra
  • ItemType numero = 4 ha il nome dell'oggetto = Computer

Così, invece di smistamento a partire dal numero, lo voglio ordinati in base item.name (ASC) come questo:

  • ItemType numero = 2 ha il nome dell'oggetto = Chair
  • ItemType numero = 4 ha il nome dell'oggetto = Computer
  • ItemType numero = 1 ha nome dell'oggetto = Tabella
  • ItemType numero = 3 ha nome dell'oggetto = Finestra

risposta

-2

nel tua ricerca, è possibile utilizzare/aggiungere ORDER BY itemType ASC

15

Per recuperare i record dal database in un ordine specifico, è possibile utilizzare il order method:

Item.order(:name) 

di default questo smista ascendente.

0

Per la realizzazione di ASC per il nome tipo di campi (alfabeti) (Modalità predefinita di ordinamento),

You can use ORDER BY Clause in MySQL 

Quindi, In Rails si può semplicemente utilizzare

Model.order(:field_name) 
1

È anche possibile impostare l'ordine predefinito in il vostro modello come questo:

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

Ciò ordinare gli elementi in item_name senza alcun cambiamento nel controllo

Problemi correlati