我正在使用 Rails3 beta、will_paginate gem 和 geokit gem & plugin。
作为 geokit-rails 插件,似乎不支持 Rails3 范围(包括 :origin 符号是问题),我需要使用 .find 语法。
代替范围,我需要以数组格式组合两组标准:
我有一个默认条件:
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])
问题:
- 有没有一种简单的方法来组合这两个条件数组(如果我的措辞正确的话)
- 虽然它不会导致问题,但有没有一种 DRYer 方法来创建这些老化的桶?
- 有没有办法将 Rails3 范围与 geokit-rails 插件一起使用?
谢谢你的时间。