1

特定の日付範囲の統計を生成しようとしています。たとえば、「期間」属性を持つ Project モデルがあります。ユーザーは、メニューから 3 つの異なる値を選択できます。

  • 学年
  • 学期
  • 夏学期

これは、検索コントローラーでこれまでに持っているものです。

def index
  unless params[:from].nil? and params[:to].nil?
    @result = Project.where('start_date >= ? AND start_date <= ?', Date.strptime(params[:from], "%m/%d/%Y"), Date.strptime(params[:to], "%m/%d/%Y"))
...
end

これにより、すべてのプロジェクトの配列が得られますが、その配列を統計に変換することはできません。

学年度の期間を持つプロジェクトの合計、学期の期間を持つプロジェクトの合計、夏学期の期間を持つプロジェクトの合計を取得したいと考えています。

コードは、後でオプションのリストに「1 か月」を追加した場合にコードがそれを選択できるように、十分に柔軟でなければなりません。

以前は金額でそれを行っていましたが、文字列値ではそうではありませんでした: Rails 3. 配列から合計を取得する

結果は次のようになります。

** Duration **
Academic year: 12
Semester: 9
Summer term: 5

** Course Disciplines **
Dental: 11
Biomedical: 3
Nursing: 7

** many more other attributes ***

ありがとう!

4

4 に答える 4

0

Ruby には Array クラスに優れた select メソッドがあるため、次のようなことができます。

a = [1, 3, 10, 20, 50]

results = a.select {|item| item > 3}

puts results

#->[10, 20, 50]

これを使用すると、いくつかの複雑な要件をセットアップしてから、結果の配列でカウントを実行できます。

多くのアイテムに対して頻繁にこれを行う必要がある場合は、バックグラウンドで (たとえば resque を介して) または作成/更新時に更新する別のテーブルまたはシステムに統計を保存する価値があることに注意してください。

于 2013-06-28T02:55:07.737 に答える