2013-05-09 10 views
21

Hallo ich dieses ModellSortieren aufsteigend Rails

Modell Artikel

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

Modell haben item_type

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

dann lassen Sie in der Steuerung sagen, ich will Typen sortieren (welche Klasse ItemType hat) in aufsteigender Reihenfolge basierend auf dem Artikelnamen. Wie mache ich das?

Zum Beispiel

  • ItemType Nummer = 1 enthält Artikel name = Tabelle
  • ItemType Nummer = 2 enthält Artikel name = Chair
  • ItemType number = 3 hat Artikelname = Fenster
  • ItemType number = 4 hat Elementname = Computer

Also anstatt es von der Nummer Sortierung, ich möchte es auf item.name sortierte Basis (ASC) wie folgt aus:

  • ItemType Nummer = 2 hat Elementname = Stuhl
  • ItemType Anzahl = 4 hat Elementname = Computer
  • ItemType Anzahl = 1 hat Elementname = Tabelle
  • ItemType Anzahl = 3 hat Einzelteilname = Fenster

Antwort

-2

in Ihrer Anfrage, können Sie/hinzufügen ORDER BY itemType ASC

15

Um Datensätze aus der Datenbank in einer bestimmten Reihenfolge abrufen, können Sie die 012 verwenden:

Item.order(:name) 

standardmäßig sortiert diese aufsteigend.

0

Für ASC machen (Standardmodus Sortierung) für Namens Art von Feldern (Alphabete),

You can use ORDER BY Clause in MySQL 

Daher In Rails können Sie einfach

Model.order(:field_name) 
1

Sie auch Standard gesetzt, um in Ihr Modell wie folgt:

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

Dies wird Artikel nach item_name ohne Änderung in Controller sortieren

Verwandte Themen