Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查用户是否收到并邀请参加10天内发生的活动。(RoR)_Javascript_Ruby On Rails_Ruby_Web Applications - Fatal编程技术网

Javascript 检查用户是否收到并邀请参加10天内发生的活动。(RoR)

Javascript 检查用户是否收到并邀请参加10天内发生的活动。(RoR),javascript,ruby-on-rails,ruby,web-applications,Javascript,Ruby On Rails,Ruby,Web Applications,我正在构建一个RubyonRails网络应用程序,用户可以互相邀请参加不同的活动。如果某个用户收到邀请参加不到10天的活动,我想向该用户发送通知。我知道我可以通过以下方式轻松执行此检查: invite.date - 10.days < Date.now invite.date-10.days

我正在构建一个RubyonRails网络应用程序,用户可以互相邀请参加不同的活动。如果某个用户收到邀请参加不到10天的活动,我想向该用户发送通知。我知道我可以通过以下方式轻松执行此检查:

invite.date - 10.days < Date.now
invite.date-10.days
但是我不知道什么时候执行这个检查,或者把它放在哪里(在控制器、助手、javascript?)。。。。我是否希望每次用户进入站点时都执行此检查,即使每个用户都有很多邀请?或者,我是否希望在发送邀请后直接将通知排队,即使通知将在几天/几周内发送。至少对我来说,把这些东西放在RoR的什么地方并不明显。我希望我的问题有意义

提前谢谢

您需要设置一个。有一些宝石,使它很容易检查这类事情,如

有了这个gem,您可以设置一个时间表,比如说每小时运行一次

every(1.hour, "Check for people to send invites to") do
  User.invitable.each { |u| u.send_notification! }
end

这只是一个小例子。主要的一点是,无论您指定的时间长短,cron作业都会反复运行。在这种情况下,它将每小时运行一次,寻找您需要邀请的用户。如果您决定使用clockwork,您需要阅读文档以了解更多您可以做的事情。

当然,您可以随时安装gem(无论何时或clockwork),但如果您想知道如何在不安装任何东西的情况下安装gem。首先创建一个名为“events.rake”的文件,并将其放在名为“tasks”的文件夹中,然后将其放在lib文件夹中。在文件中使用类似的代码:

namespace :events do
  task :daily_event_check => :environment do
    (Your code here)
  end
end
然后转到终端并使用crontab-e。输入以下代码:

0 0 * * * /bin/bash -l -c 'cd /path/to/your/app && RACK_ENV=(your preferred environment) bundle exec rake events:daily_event_check --silent'

然后保存。这将在每晚午夜运行您的代码。如果您喜欢不同的时间,请查找crontab,它将有时间设置的全面分解。这会让你走的

您需要定期执行特定的逻辑。因为你的“时间单位”是一整天,你可以在每天12:00运行一个rake任务,这将在不到10天的时间内抓取一个活动的所有邀请,并向最终用户发送一封电子邮件。您可能希望存储此信息(通过电子邮件发送的邀请),这样您就不会每天向最终用户发送垃圾邮件。谢谢您的回答,发条似乎是解决此问题的一种非常方便的方法!