按升序订单导轨排序

时间:2013-05-09 07:09:11

标签: ruby-on-rails sorting view

嗨,我有这个型号

模型项目

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

模型item_type

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

然后在控制器中说我想根据项目名称按升序对类型(具有类ItemType)进行排序。我该怎么做?

例如,  

        
  • ItemType number = 1具有Item name = Table
  •     
  • ItemType number = 2具有Item name = Chair
  •     
  • ItemType number = 3具有Item name = Window
  •     
  • ItemType number = 4具有Item name = Computer
  •  

所以不是从数字中对它进行排序,而是希望它基于item.name(ASC)进行排序,如下所示:  

        
  • ItemType number = 2具有Item name = Chair
  •     
  • ItemType number = 4具有Item name = Computer
  •     
  • ItemType number = 1具有Item name = Table
  •     
  • ItemType number = 3具有Item name = Window
  •  

5 个答案:

答案 0 :(得分:34)

这样的事情应该可以解决问题...

ItemType.includes( :item ).order( 'inventory_items.name DESC' )

此外,如果您需要在许多地方执行此操作,您可以通过在:order电话中提供has_many参数来完成相同的操作,而不是http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many

答案 1 :(得分:17)

要按特定顺序从数据库中检索记录,您可以使用order method

Item.order(:name)
默认情况下,

按升序排序。

答案 2 :(得分:1)

您还可以在模型中设置默认顺序,如下所示:

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

这将按item_name对项目进行排序,而不对控制器进行任何更改

答案 3 :(得分:0)

为名称类型的字段(字母表)制作ASC(默认排序模式),

You can use ORDER BY Clause in MySQL

因此,在Rails中你可以简单地使用

Model.order(:field_name)

答案 4 :(得分:-2)

在您的查询中,您可以使用/添加ORDER BY itemType ASC