繁体   English   中英

按升序订单导轨排序

[英]Sort in Ascending Order Rails

嗨,我有这个模型

型号项目

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

像这样的东西应该做的伎俩......

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

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

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

Item.order(:name)

默认情况下,这会按升序排序。

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

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

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

对于名称类型的字段(字母表)进行ASC(默认排序模式),

You can use ORDER BY Clause in MySQL

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

Model.order(:field_name)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM