2016-12-12 5 views
0

In punching_bag Github Seite, es heißt, ich kann rake punching_bag:combine für die Kombination von Treffern ausführen.Punching Bag gibt Fehler beim Ausführen von Rake

, wenn ich das laufen rake ich Fehler unter:

SELECT DISTINCT "punches"."punchable_type" FROM "punches" ORDER BY punches.average_time DESC 
     01 PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 
     01 LINE 1: ...unches"."punchable_type" FROM "punches" ORDER BY punches.av... 
     01               ^
     01 : SELECT DISTINCT "punches"."punchable_type" FROM "punches" ORDER BY punches.average_time DESC 
     01 rake aborted! 
     01 ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 
     01 LINE 1: ...unches"."punchable_type" FROM "punches" ORDER BY punches.av... 
     01 

Was falsch ist, und wie kann ich dieses Problem beheben?

Antwort

0

Grund ist, die ORDER BY-Klausel kann nur angewendet werden, nachdem die DISTINCT angewendet wurde. Da nur die Felder in der SELECT-Anweisung für die DISTINCT-Operationen berücksichtigt werden, sind dies die einzigen Felder, die in ORDER BY (from here) verwendet werden können.

So in punching_bag.rake ändern:

punchable_types = Punch.uniq.pluck(:punchable_type)

TO

punchable_types = Punch.unscope(:order).uniq.pluck(:punchable_type)

und gleichen mit:

Punch.uniq.where(punchable_type: punchable_type).pluck(:punchable_id)

Änderung:

Punch.unscope(:order).uniq.where(punchable_type: punchable_type).pluck(:punchable_id)

Grundsätzlich unscope(:order) hinzufügen, wenn jede Anfrage begining.

Verwandte Themen