我们在我们的项目中使用任何带有 rails 的 gem。我知道我们可以像这样使用每当 gem 来安排命令。
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
我们如何通过when 和rails 实现这一点?
我能想到的一个可能的解决方案是,我为此创建一个运行者并检查那里的条件。类似:
every 1.day, :at => '6:00 am' do
runner "User.say_conditional_hello"
end
在我的用户模型中:
def self.say_conditional_hello
`echo "Hello"`
end
关于这种方法或任何新方法的任何建议都将非常有帮助。
提前致谢!。
最佳答案
如果你想 只有如果条件为真,则安排任务,那么我认为您不可能安排任务,然后在运行任务的时间,代码可以决定是否应该运行,具体取决于您的条件
One possible solution i can think of is that i create a runner for this and check that condition there.Something like:
是的,这是处理此问题的一种方法,但是 IMO 使用时的最佳行为是在创建 rake 任务以检查条件然后执行您的代码或执行您的工作时
就像是:
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
关于ruby-on-rails - rails 每当 gem ,只有在特定条件通过时才运行命令。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331332/