在ruby方法中传递参数

时间:2017-03-31 11:34:23

标签: ruby rake rake-task

我想在启动rake任务时从CLI发送2个参数。我试过这段代码:

namespace :tnx do

  require_relative "transactions.rb"
  include Cnp_transactions_modes

  task :generate, [:clean_all] => [:environment]  do |t, args|

    if args[: clean_all] == 'true'
      // something
    end

    if args[:times].empty?
      Cnp_transactions_modes.create_transactions(args[:times])
    end    
  end
end

但我得到错误:

rake aborted!
NoMethodError: undefined method `empty?' for nil:NilClass

我如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

错误来自以下事实:如果args[:times]nil,则无法在empty?上调用args[:times],因为empty?未定义为nil nil对象。在Rails中,您可以使用blank?来检查它是empty还是if args[:times]

这应该足够了:

args[:times]

您不需要检查$response->metafields[13][id]是否为空,您需要检查它是否已定义。

请注意,它与您的情况相反,但它可能更合乎逻辑。