Hi I have this model
Model item
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
then let say in controller I want to sort types (which has class ItemType) in ascending order based on Item name. How do I do that?
For example,
So instead of sorting it from number, I want it sorted based on item.name(ASC) like this:
Something like this should do the trick...
ItemType.includes( :item ).order( 'inventory_items.name DESC' )
Also, if you need to do this in many locations, you can accomplish the same thing by providing an :order
parameter to your has_many
call, instead - http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many.
To retrieve records from the database in a specific order, you can use the order
method:
Item.order(:name)
by default this sorts ascending.
For making ASC (Default sorting mode) for name kind of fields (Alphabets),
You can use ORDER BY Clause in MySQL
Hence, In Rails you can simply use
Model.order(:field_name)
You can also set default order in your Model like this:
default_scope order("#{self.table_name}.item_name ASC")
This will sort items by item_name without any change in controller
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With