好的,所以这个问题已经过了3天了,我确定它很简单,我似乎无法弄明白。
我创建了一个范围,以便在两天之内返回所有生日以及一些其他条件的用户后,我遇到了一个问题。该信息应该呈现给用户仪表板。
这是困扰我的,如果我刷新页面,则找到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
。* FROMdrivers
WHERE((date_of_birth&lt; = &#39; 1990-02-05&#39;)或DATE_ADD(date_of_birth,INTERVAL 23年)BETWEEN &#39; 2013年4月1日&#39; AND&#39; 2013-04-30&#39;)AND(drivers.id NOT IN(SELECT 来自follow_ups的driver_id,其中team_id = 2))AND (average_miles_per_day&gt; = 0.35)AND(travel_time&lt; 2000)AND (travel_time +(average_miles_per_day * 84)&gt; = 2000)
任何时候rails尝试执行此查询它都不起作用。在sql客户端中执行此查询时,它就像魅力一样。
答案 0 :(得分:0)
也许......字符串到日期转换存在问题。尝试使用STR_TO_DATE()函数转换模型。请为每个日期做一次......让我知道它有帮助。