Rails3 ベータ版、will_paginate gem、および geokit gem & plugin を使用しています。
geokit-rails プラグインは Rails3 スコープをサポートしていないようです (:origin シンボルが問題です)。.find 構文を使用する必要があります。
スコープの代わりに、2 つの基準セットを配列形式で組み合わせる必要があります。
デフォルトの条件があります:
conditions = ["invoices.cancelled = ? AND invoices.paid = ?", false, false]
UI の選択に応じて、次の条件のいずれかをデフォルトの条件に追加する必要がある場合があります。
#aged 0
lambda {["created_at IS NULL OR created_at < ?", Date.today + 30.days]}
#aged 30
lambda {["created_at >= ? AND created_at < ?", Date.today + 30.days, Date.today + 60.days]}
#aged > 90
lamdba {["created_at >= ?", Date.today + 90.days]}
結果のクエリは次のようになります。
@invoices = Invoice.find(
:all,
:conditions => conditions,
:origin => ll #current_user's lat/lng pair
).paginate(:per_page => @per_page, :page => params[:page])
質問:
- これら 2 つの条件の配列を組み合わせる簡単な方法はありますか (正しく表現した場合)
- 問題に寄与していませんが、これらの古いバケツを作成するための DRYer な方法はありますか?
- 動作する geokit-rails プラグインで Rails3 スコープを使用する方法はありますか?
御時間ありがとうございます。