每当我们在项目中使用带导轨的宝石时,我们都会使用它。我知道我们可以在每当有这样的宝石时使用一个时间表。
every 1.day, :at => '6:00 am' do
command "echo 'hello'"
end
但是我的问题是我只想在满足某些条件时才执行此命令。这样的事情。
every 1.day, :at => '6:00 am' do
if User.any_new_user?
command "echo 'hello'"
end
end
我们如何通过everyth和rails实现这一目标?我能想到的一种可能的解决方案是,我为此创建一个运行器并检查那里的条件。
every 1.day, :at => '6:00 am' do
runner "User.say_conditional_hello"
end
在我的用户模型中:
def self.say_conditional_hello
`echo "Hello"`
end
关于此方法或任何新方法的任何建议将非常有帮助。
提前致谢!。
如果你想只有当条件为真,那么我不认为它有可能你可以计划任务,然后当它的时间运行任务,代码可以决定是否应该运行与否,取决于计划任务的情况
我能想到的一种可能的解决方案是,我为此创建一个运行器并检查那里的条件。
是的,这是处理此问题的一种方式,但是IMO在使用每当创建创建检查条件然后执行代码或执行工作的rake任务时的最佳行为
就像是:
namespace :user do
desc "description"
task check_for_new: :environment do
if User.any_new_user?
# code
end
end
end
schedule.rb
文件中every 1.day, :at => '6:00 am' do
rake "user:check_for_new"
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句