在创建范围以返回所有生日在两天之间的用户以及其他一些条件后,我遇到了一个问题。此信息应该呈现给用户仪表板。
如果我刷新页面,则找到 0 条记录。如果我在 Rails 开发环境控制台中运行范围,它也会返回 0 条记录。但是,如果我在活动记录器打开时从控制台复制查询,并将其直接放入我的 SQL 客户端,它会返回正确的记录。此范围也与其他一些范围链接,但如果我要从查询链中删除此范围,则查询有效,它只是不会像我希望此范围那样过滤出生日期范围。
SQL 客户端在同一个数据库上。
范围:
where(
"(date_of_birth <= ?) OR DATE_ADD(date_of_birth, INTERVAL ? YEAR) BETWEEN ? AND ?",
min_age.years.ago.to_date,
min_age,
beginning_of_month,
end_of_month
)
查询:
SELECT `drivers`.* FROM `drivers` WHERE ( (date_of_birth <=
'1990-02-05') OR DATE_ADD(date_of_birth, INTERVAL 23 YEAR) BETWEEN
'2013-04-01' AND '2013-04-30') AND (drivers.id NOT IN (SELECT
driver_id from follow_ups where team_id = 2)) AND
(average_miles_per_day >= 0.35) AND (travel_time < 2000) AND
(travel_time + (average_miles_per_day * 84) >= 2000)
任何时候 Rails 试图执行这个查询它都不起作用。在 SQL 客户端中执行此查询时,它就像一个魅力。