Ruby on rails Rails自定义Rake任务无方法错误

Ruby on rails Rails自定义Rake任务无方法错误,ruby-on-rails,ruby,rake,rake-task,rufus-scheduler,Ruby On Rails,Ruby,Rake,Rake Task,Rufus Scheduler,我正在尝试为Rails应用程序设置一个自定义rake任务,检查您的位置是否在有街道清洁限制的特定区域内。如果是,您可以单击“提醒我”按钮,将用户id和限制id保存到提醒表中 我让Rufus gem每15分钟运行一次rake任务 然后我想要的是rake任务检查当前时间和日期以及与限制id对应的日期和开始时间,如果在30分钟内,它应该通过电子邮件发送给用户以移动他们的汽车 当我运行下面的当前代码时,出现以下错误: rake aborted! undefined method `reminders'

我正在尝试为Rails应用程序设置一个自定义rake任务,检查您的位置是否在有街道清洁限制的特定区域内。如果是,您可以单击“提醒我”按钮,将用户id和限制id保存到提醒表中

我让Rufus gem每15分钟运行一次rake任务

然后我想要的是rake任务检查当前时间和日期以及与限制id对应的日期和开始时间,如果在30分钟内,它应该通过电子邮件发送给用户以移动他们的汽车

当我运行下面的当前代码时,出现以下错误:

rake aborted!
undefined method `reminders' for # <ActiveRecord::Relation::ActiveRecord_Relation_Day:0x007fb38c3274f8>
/Users/m/WDI/park_pointer/lib/tasks/reminder.rake:11:in `block (2 levels) in <top (required)>'
Tasks: TOP => reminder:mail_users
我想我就快到了,但我已经为此工作了几个月,对下一步有点不知所措

提前谢谢


-米歇尔

问题在于这一行:

today = Day.where(:id => time.wday + 1)
这不是返回记录,而是返回一个
ActiveRecord::relationship
,这意味着还没有对查询进行评估。(它这样做是为了让您可以将过滤器链接在一起,并且只有在您对其进行迭代时,才会对其求值为SQL

在不知道您的
模型是什么样子的情况下,我认为您想要的是:

today = Day.where(:id => time.wday + 1).first

这将返回第一个结果,如果没有结果,则返回
nil
。如果
today
为非nil,则将使用
提醒方法。

谢谢!这消除了错误并给了我一个新的错误,因此朝着正确的方向迈出了一步!
today = Day.where(:id => time.wday + 1).first