2016-05-16 4 views
0

である私は、私は​​でmetrics1 rowを持つすべてのユーザーを検索する以下の注文とリミット - 方向「{:processed_on =>:DESC}」は無効

users has_many metrics

を持っており、 limit(1)

何私が

User.includes(:metrics).where(status: 'active').order(:metrics => { processed_on: :desc }).limit(1) 

エラーしようとしています:

を210

方向 "{:processed_on =>:desc}"は無効です。正しい方向は:[:asc、:desc、:ASC、:DESC、 "asc"、 "desc"、 "ASC"、 "DESC"]

答えて

3

代わりにorderでハッシュ構文を使用することはできません。 SQL直接:

User.includes(:metrics).where(status: 'active').order('metrics.processed_on DESC').limit(1) 

relation metrics missing in FROM clauseの行に沿ってデータベースからエラーが発生することがあります。その場合は、同様にあなたのクエリにreferences(:metrics)ステートメントを追加します。

User.includes(:metrics).references(:metrics).where(status: 'active').order('metrics.processed_on DESC').limit(1) 

また、.limit(1)を呼び出すと、長さ1の配列を返します。あなたは代わりに.firstを使用することを検討したいかもしれません。

+0

ActiveRecord 4のorder句でハッシュ構文を使用できると思います。 – Bustikiller

+0

ハッシュ構文は可能ですが、ハッシュが 'where'または' joins'節のクエリとは異なるネストであれば動作しません。 –

+0

iterateを実行すると、1つ以上の指標が表示されます –

関連する問題