【问题标题】:Sort in Ascending Order Rails按升序排序 Rails
【发布时间】:2013-05-03 14:35:47
【问题描述】:

你好,我有这个型号

模型项

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

【问题讨论】:

    标签: ruby-on-rails sorting view


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      Item.order(:name)
      

      默认情况下按升序排序。

      【讨论】:

        【解决方案3】:

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

        You can use ORDER BY Clause in MySQL
        

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

        Model.order(:field_name)
        

        【讨论】:

          【解决方案4】:

          您还可以像这样在模型中设置默认顺序:

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

          这将按 item_name 对项目进行排序,而控制器中没有任何变化

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-11-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-11
              • 1970-01-01
              • 2012-11-08
              • 2023-03-07
              相关资源
              最近更新 更多