Salut j'ai ce modèle
Article de modèle
class Inventory::Item < ActiveRecord::Base
has_many :types, :class_name => "ItemType"
attr_accessible :name
end
Modèle item_type
class Inventory::ItemType < ActiveRecord::Base
belongs_to :item
attr_accessible :number
end
puis, disons dans le contrôleur, je veux trier les types (qui ont la classe ItemType) dans l'ordre croissant en fonction du nom de l'élément. Comment je fais ça?
Par exemple,
Ainsi, au lieu de le trier par numéro, je veux le trier en fonction de item.name (ASC) comme ceci:
Quelque chose comme ça devrait faire l'affaire ...
ItemType.includes( :item ).order( 'inventory_items.name DESC' )
De même, si vous avez besoin de le faire dans de nombreux endroits, vous pouvez effectuer la même chose en fournissant un paramètre :order
à votre appel has_many
, à la place - http://apidock.com/Rails/ActiveRecord/Associations/ClassMethods/has_many .
Pour extraire des enregistrements de la base de données dans un ordre spécifique, vous pouvez utiliser la méthode order
:
Item.order(:name)
par défaut cela trie par ordre croissant.
Vous pouvez également définir l'ordre par défaut dans votre modèle comme suit:
default_scope order("#{self.table_name}.item_name ASC")
Cela va trier les éléments par item_name sans aucune modification du contrôleur
Pour créer ASC (Mode de tri par défaut) pour le type de nom de champs (Alphabets),
You can use ORDER BY Clause in MySQL
Par conséquent, dans Rails, vous pouvez simplement utiliser
Model.order(:field_name)