Ruby / RoR,ActiveRecord - “安排”方法并在模型

时间:2017-11-13 15:47:27

标签: ruby-on-rails ruby activerecord super

系统

[2017-11-13 18:34:46] INFO  WEBrick 1.3.1
[2017-11-13 18:34:46] INFO  ruby 1.9.3 (2012-02-16) [x86_64-linux]

Ror中的模型,即工作(当前版本)

class Expenditure < ActiveRecord::Base
...
  class << self
    def arrange
      super(:order => :name)
    end
...

我尝试为更改订单方式添加一个字段。 “的 SORT_ORDER ”。 我在ActiveRecord中找不到方法arrange,它被重新化了 我尝试过不成功

super(:order => :sort_order, :name)

...

super.order(:sort_order, :name)

2 个答案:

答案 0 :(得分:0)

来自ancestry gem的

arrange方法。它是https://github.com/stefankroes/ancestry/blob/8482196e32ac46a9d89c5e3b2d7080e4b830b1d0/lib/ancestry/class_methods.rb#L31

    # Arrangement
    def arrange options = {}
      # Get all nodes ordered by ancestry and start sorting them into an empty hash
      arrange_nodes self.ancestry_base_class.reorder(options.delete(:order)).where(options)
    end

答案 1 :(得分:0)

我不确定我是否理解您的问题,但我认为您希望使用self(而非super',因为AR中没有定义arrange方法){{1 }} 方法。如果您想按ordersort_order按升序排序,则您的方法应如下所示:

name

您甚至可以省略def arrange self.order(:sort_order => :asc, :name => :asc) end 并使用self