Kombinieren von Zustandsarrays in Rails
Ich verwende die Rails3-Beta, will_paginate gem und das Geokit gem & plugin.
Da das Geokit-Rails-Plugin anscheinend keine Rails3-Bereiche unterstützt (einschließlich des Ursprungssymbols), muss die .find-Syntax verwendet werden.
Anstelle von Gültigkeitsbereichen muss ich zwei Kriteriensätze im Array-Format kombinieren:
Ich habe eine Standardbedingung:
conditions = ["invoices.cancelled = ? AND invoices.paid = ?", false, false]
Je nach Auswahl der Benutzeroberfläche muss ich möglicherweise eine der folgenden Bedingungen zur Standardbedingung hinzufügen:
#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]}
Die resultierende Abfrage ähnelt:
@invoices = Invoice.find(
:all,
:conditions => conditions,
:origin => ll #current_user's lat/lng pair
).paginate(:per_page => @per_page, :page => params[:page])
Fragen
Ist es eine einfache Möglichkeit, diese beiden Bedingungsfelder zu kombinieren (wenn ich das richtig formuliert habe)Während dies nicht zum Problem beiträgt, gibt es eine DRYer-Methode, um diese alternden Eimer herzustellen? Gibt es eine Möglichkeit, Rails3-Bereiche mit dem Geokit-Rails-Plugin zu verwenden, die funktionieren wird?Vielen Dank für Ihre Zeit