Rails API attribute_missing(匹配,* args和& block)参数解释了吗?

时间:2014-05-08 16:20:51

标签: ruby-on-rails

我决定在api.rubyonrails.org中测试所有方法。我开始(没有理由):

def attribute_missing(match, *args, &block)
  __send__(match.target, match.attr_name, *args, &block)
end

这个功能期待什么数据?有人可以用预先填充的参数给我一个真实的这个函数的例子吗?我还需要一种方法来测试每个Rails类实例方法,如#attribute_missing,"rails console"命令?非常感谢!我认为这是通过rails API并了解其功能的最佳方式。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

此方法的参数可以这样解释:

match:此方法唯一必需的参数。无论是谁调用此方法,至少需要提供match参数。

*argsargs将包含传递给此方法的所有其他参数。这意味着用5个参数调用attribute_missing将导致match包含第一个参数,args是包含传递的其他参数的4个元素数组。 *称为splat运算符。在方法声明中使用splat将导致使用splat(在本例中为args)的任何参数捕获传递给方法的所有其他参数。

&block:如果此方法传递了一个块,您可以使用block.call来调用它。

我个人不建议通过Rails API的每个方法来学习它。我会找到一个教程,可以让您开始使用Rails编写应用程序,然后在使用它时探索函数在API中的工作方式。