クエリから返された配列を拡張して、新しいメソッドを追加したいと思います。
モデルクエリがあり、いくつかの計算された属性size_x、size_y...があると仮定します。
私のコントローラーでは、いくつかのクエリを取得します
@queries = Query.limit(10).all
これで、@queriesは配列になります。2つのメソッドで配列を拡張したい
@queries.average_size_x
と
@queries.average_size_y
グローバルArrayクラスに追加せずに、これら2つのメソッドで返される配列を拡張する優れたソリューションを探しています。それを行う方法はありますか?
これが私が試したいくつかのことです:
- self.findメソッドの再定義
これは、クエリを古い構文に変更した場合にのみ機能します
Query.find(:all, :limit => 5)
関係を拡張する
Query.limit(10).extending(QueryAggregator)
all
これは、オブジェクトがActiveRecordリレーションであるためにメソッドを呼び出さない場合に機能しますが、一度all
呼び出されると、メソッドaverage_size_x
は使用できません。
私が見る唯一のオプションは、配列クラスを拡張してそこにメソッドを追加することですが、他のモデルには関係がない可能性があります...
助言がありますか ?