我正在查看一些代码,我发现了这个内容:
@order = current_order(true)
这是程序员写的方法:
def current_order
@user.orders.incomplete.last
end
我在任何地方都看不到current_order
的参数。有人可以解释为什么这样做或为什么这样做?
答案 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
替换为您的宝石文件夹的位置。
这将显示定义方法的两个位置。