按升序排列 Rails

30

你好,我有这个模型。

模型项目

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

模型项目类型

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

那么,假设在控制器中,我想按照物品名称升序对类型(具有ItemType类的)进行排序。我该怎么做?

例如,

  • ItemType编号为1,物品名称为Table
  • ItemType编号为2,物品名称为Chair
  • ItemType编号为3,物品名称为Window
  • ItemType编号为4,物品名称为Computer

因此,我希望按照item.name(ASC)对其进行排序,而不是按照编号排序,如下所示:

  • ItemType编号为2,物品名称为Chair
  • ItemType编号为4,物品名称为Computer
  • ItemType编号为1,物品名称为Table
  • ItemType编号为3,物品名称为Window

5个回答

39

19

为了按特定顺序从数据库检索记录,您可以使用order方法

Item.order(:name)

默认情况下,此项排序为升序。


2
为了使名称字段(字母)成为ASC(默认排序模式),
You can use ORDER BY Clause in MySQL

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


Model.order(:field_name)

1
您可以在模型中设置默认排序方式,如下所示:
default_scope order("#{self.table_name}.item_name ASC")

这将按照 item_name 对项目进行排序,而无需更改控制器


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接