1

これは私のコントローラーにあります:

@somethings = Something.find(:all)

そして、私のカウント変数は、「rca」に基づいてこのデータの分割を表示します。

@something_to_count = Something.count( :conditions => { :rca => "4X32W"})
@something_to_count2 = Something.count( :conditions => { :rca => "6X36W"})

.....他のカウント変数など...

単純なことですが、あるビューでは過去30日以内に、別のビューでは日付範囲内に「何か」テーブルから作成されたすべてのエントリのこれらの統計/カウントを表示しようとしていました。モデルのscaffold関数(created_atおよびupdated_at)によって追加されたデフォルトのタイムスタンプがあります。

私の見解は2ページに分割する必要があります。1つのページは日付範囲を受け入れ、カウント変数をデータと一緒にテーブルに表示し、もう1つのページは過去30日間の同じものを表示します。(つまりdef last_30_daysdef within_datesアクションになります)。30などから日付変数を引いたものが機能していないように見える解決策をオンラインで見つけました。本格的な実用的なソリューションをいただければ幸いです。助けてください。また、単純な日付範囲エントリを日付スタンプと同じ形式に変換するにはどうすればよいですか?

4

1 に答える 1

1

クエリのスコープを作成できるため、それらを再利用できます。
あなたの問題に対する私のアプローチは次のようになります。

scope :last_30_days, where("created_at between ? and ?", Date.today - 30, Date.today)
scope :within_dates, lambda { |start_date, end_date|
  where("created_at between ? and ?", start_date, end_date)
}
scope :based_on_rca, lambda { |rca|
  where(:rca => rca)
}

@something_to_count = Something.based_on_rca("4X32W").last_30_days.count
@something_to_count = Something.based_on_rca("4X32W").within_dates(Date.today - 4.month, Date.today - 1.month).count

大きなクエリに反映するために連鎖できる小さなクエリを含むさまざまなスコープ。よろしく。

于 2012-06-28T13:18:27.250 に答える