2016-12-12 15 views
0

punching_bag githubページで、ヒットを組み合わせるのにrake punching_bag:combineを実行できます。rakeを実行しているときにパンチングバッグにエラーが発生する

私はこのrakeを実行したときに、私は以下のエラーを取得:

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 

は何が問題で、どのように私はこの問題を解決することができますか?

答えて

0

理由は、ORDER BY句は、DISTINCTが適用された後にのみ適用できます。 DISTINCT操作ではSELECTステートメントのフィールドのみが考慮されるため、ORDER BY(from here)ではフィールドのみが使用されます。だから、punching_bag.rake

、変更:

punchable_types = Punch.uniq.pluck(:punchable_type)

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

TOと同じで:

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

変更:

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

は基本的にあれば各要求を初めにunscope(:order)を追加します。

関連する問題