2017-11-13 3 views
0

-SystemRubin/RoR, Active - "arrangieren" Methode und verwenden "super" in Modell

[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] 

Modell in Ror, dass die Arbeit (Currenct Version)

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

Ich habe versucht, einen hinzufügen mehr Feld für Änderungsreihenfolge. "sort_order". Ich kann nicht Methode arrange in Active finden, die redifyned wurde ich habe unsuccesfully

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

...

super.order(:sort_order, :name) 
+0

verwenden, die Attribute haben Sie für die Bestellung verwenden? –

+0

Ich füge "sort_order" vor der "name" -Bestellung hinzu, jetzt habe ich ein Ende der Abfrage wie folgt: '... ORDER BY (Fall, wenn expenses.ancestry null ist, dann 0 else 1 end), expenses.ancestry, name', deshalb muss ich super verwenden –

+0

Ich habe keine Idia, wo ist 'arrangieren' Methode von –

Antwort

0

arrange Methode von ancestry gem. Es ist 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 
+0

Ja, ich habe 'Abstammung (2.0.0)' danke –

+0

Ich verstehe nicht, wie kann ich zwei Parameter senden zum Sortieren. Parameter scheint wie Hahs, Aber hat nicht funktioniert wie '(: order =>: sort_order,: order =>: name)' oder '({: order =>: sort_order,: order =>: name}) ' –

+0

Sie kann dies mit ': order =>" sort_order ASC, Name ASC "' . Weitere Beispiele finden Sie hier https://StackOverflow.com/questions/3587776/ruby-on-rails-how-do-i-sort -with-two-columns-using-activerecord –

0

nicht sicher, ob ich Ihre Frage richtig verstanden, aber ich glaube, Sie self (nicht super denn es gibt keine arrange Methode definiert in AR) mit order Methode verwenden wollte. Wenn Sie es von sort_order und name aufsteigend Ihre Methode sollte wie folgt aussehen bestellen möchten:

def arrange 
    self.order(:sort_order => :asc, :name => :asc) 
end 

Sie können sogar self weglassen und nur self.order(:sort_order => :asc, :name => :asc)

+0

Nein, ich brauche 'super' –

Verwandte Themen