2017-02-02 9 views
1

Ich habe eine Rails 5 App mit Publikationen. Diese Veröffentlichungen müssen nach Jahren sortiert werden, wobei die letzten Jahre an erster Stelle stehen.Rails App sortiert keine Publikationen nach Jahr

Das Years-Feld einer Publikation hat den Ganzzahl-Datentyp.

Die PublicationsController hat eine Art actionmethod:

def sort 
    @category = PublicationCategory.find_by_name(params[:category]) 
    @publications = Publication.sort_by_category(@category.id).grouped_by_year 
end 

ich einen Umfang grouped_by_year erstellt:

app/models/publication.rb 

scope :grouped_by_year, ->{ order(year: :desc).group_by { |p| p.year} } 

ich drei Publikationen erstellt, einer des Jahres 2016, 2015 und 2014

aber anstatt in dieser Reihenfolge zu erscheinen:

2016 
2015 
2014 

sie erscheinen in der Reihenfolge:

2015 
2014 
2016 

Hat eine Idee jemand, was das Problem sein könnte?

Meine Code-Repository unter:

https://github.com/acandael/hedera-rails

Dank für Ihre Hilfe,

Anthony

+0

Können Sie versuchen? Scope: grouped_by_year, -> {group (: Jahr) .order (Jahr:: desc)} '? – Sajan

+0

Ich habe es versucht, aber dann bekomme ich den Fehler: PG :: GroupingError: ERROR: Spalte "publications.created_at" muss in der GROUP BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden LINE 1: ..._ id "= $ 1 GROUP BY "Publikationen". "Jahr" ORDER BY created_at ... – Toontje

+0

Ich sehe, dass es irgendwie von 'created_at' bestellt, also vor allem, können Sie die Spalte' year' in 'publication' in etwas anderes seit ich umbenennen denke, das ist ein ** reserviertes Wort ** und versuche es dann erneut? – Sajan

Antwort

0

entfernen diese aus dem sort_by_category Umfang, es ist die Bestellung von Ihrer letzten Abfrage durcheinander.

.order('created_at desc')