Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Ruby on rails 编辑:如何从循环中退出并召回任务?_Ruby On Rails_Rake_Rake Task - Fatal编程技术网

Ruby on rails 编辑:如何从循环中退出并召回任务?

Ruby on rails 编辑:如何从循环中退出并召回任务?,ruby-on-rails,rake,rake-task,Ruby On Rails,Rake,Rake Task,我正在使用task对PayPal进行大规模支付API调用 编辑:若有超过250个新成员,我需要从循环中走出来,完成后再打电话给它。 我的任务是: task :pay => :environment do clnt = HTTPClient.new i = 0; data = { "METHOD" => "MassPay", ...} @users = User.all @users.each do |user|

我正在使用task对PayPal进行大规模支付API调用 编辑:若有超过250个新成员,我需要从循环中走出来,完成后再打电话给它。 我的任务是:

    task :pay => :environment do
    clnt = HTTPClient.new
    i = 0;
    data = {    "METHOD" => "MassPay",
    ...}
    @users = User.all
    @users.each do |user|
       if i == 249 
            // call task again
       end
        data["L_EMAIL#{i}"] = "#{user.email}"
        data["L_AMT#{i}"] = "1.21"
        ...
        i+=1

        end
我怎样才能做到呢?

试试这个:

Rake::Task['pay'].reenable 

一种更实用的方法是将每一件事都封装在一个
组中的
调用中。根据您的代码猜测,您会得到如下结果:

task :pay => :environment do
  @users = User.all

  @users.in_groups_of(250, false).each do |group|
    clnt = HTTPClient.new
    data = {    "METHOD" => "MassPay",
      ...}

    group.each do |user|
      data["L_EMAIL#{i}"] = "#{user.email}"
      data["L_AMT#{i}"] = "1.21"
      ...
    end
  end
end

文档是。

如果i==249 Rake::Task['pay'],你的意思是
。可重入的end
?我发现我的逻辑有点失败。当有249个新成员时,我需要从循环中走出来完成任务。然后再打电话给它。所以我应该使用break操作符?或者某种
转到
操作符