将`true`作为参数添加到应该没有参数的方法中

时间:2014-04-14 06:02:21

标签: ruby-on-rails ruby

我正在查看一些代码,我发现了这个内容:

@order = current_order(true)

这是程序员写的方法:

def current_order
  @user.orders.incomplete.last
end

我在任何地方都看不到current_order的参数。有人可以解释为什么这样做或为什么这样做?

3 个答案:

答案 0 :(得分:1)

只是预感,但我怀疑你列出的current_order的方法定义可能是测试助手,而使用current_order(true)的方法调用是非测试代码,所以它使用定义的current_order方法在spree_frontend中,特别是在Spree :: Core :: ControllerHelpers :: Order模块

答案 1 :(得分:0)

一种解释是你在其他地方声明了current_order。要证明您可以尝试使用:

current_order

根据我的理论,应该打破,因为参数版本赢了(ruby不支持多种签名方法)。

答案 2 :(得分:0)

我知道你在其中一个宝石中找到了它,但为了将来参考,这里有一些bash脚本来搜索你的代码库中的方法定义。

find app lib vendor $GEM_HOME -print | awk '{print "\""$0"\""}' | xargs grep -n "def current_order"

$GEM_HOME部分假设您正在使用RVM,它使用$ GEM_HOME环境变量。如果您不这样做,请将$GEM_HOME替换为您的宝石文件夹的位置。

这将显示定义方法的两个位置。