Я использую бета-версию Rails3, гем will_paginate и гем & плагин geokit.
Поскольку плагин geokit-rails, по-видимому, не поддерживает области Rails3 (включая проблему с символом: origin), мне нужно использовать синтаксис .find.
Вместо областей мне нужно объединить два набора критериев в формате массива:
У меня есть условие по умолчанию:
conditions = ["invoices.cancelled = ? AND invoices.paid = ?", false, false]
Мне может понадобиться добавить одно из следующих условий к условию по умолчанию, в зависимости от выбора пользовательского интерфейса:
#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])
Вопросы:
- Есть ли простой способ объединить эти два массива условий (если я правильно сформулировал)
- Хотя это не способствует возникновению проблемы, есть ли СУХОЙ способ создать эти стареющие ведра?
- Есть ли способ использовать области Rails3 с плагином geokit-rails, который будет работать?
Спасибо за ваше время.