2012-03-01 13 views
2

ActiveRecordは私にユーザーのセットを返します。私はUserオブジェクトで永続化されていないデータを使用する複雑な関数でこれらのユーザーを並べ替える必要があります。Rubyでクラスメソッドとしてソートを実装する

データが保持されていないときにスコープを使用する方法はありますか?

は、クラスメソッドとしてソート関数を記述する方法があるので、私はコールのように作ることができます:私は、このようにそれを行うことはできないと思い

sorted_users = User.first(20).sorted_my_way 

答えて

3

User.first(20).sorted_my_wayのように呼び出すことができるクラスメソッドとスコープを定義することは可能ですが、作成するクエリにのみ追加することができます。あなたがルビーの中にソートする場合、私はあなたが全体のものをラップする必要があると考えるように:私はありません

class User 
    self.sorted_my_way 
    yield.sort_by {...} 
    end 
end 
User.sorted_my_way { first(20) } 
+0

class User self.sorted_my_way(limit) first(20).sort_by {...} end end User.sorted_my_way(20) 

あなたができるもう一つは、ブロックスタイルの方法を用いることであろうスコープでそれを行うことは不可能と思われる。あなたの提案は良いものでした(私はそれを使用していませんでしたが、歩留まりに関するプライマーに感謝します)。 – Jason

+0

これは素晴らしいことです。ありがとうございました! – jeffdill2

関連する問題