我看到了*MyModel::MY_CONSTANT
并在MyModel中引用它:
MY_CONSTANT = [
:a_field,
:another_field,
[
当被称为
时permit(:name, *MyModel::MY_CONSTANT)
它扩展到
permit(:name, :a_field, :b_field)
但刚刚发生了什么?
答案 0 :(得分:3)
我希望它实际上扩展到permit(:name, :a_field, :another_field)
:)但是,基本上这就是它在数组上使用时的作用,它接受数组的值并将它们展开,就像它们作为单独的参数提供一样。那么你就可以把这些数组元素发送到一个期望个别参数的方法中。
您也可以在反向使用它,您可以定义如下方法:
def foo *args
end
...当用个别参数调用它时:
foo 'a', 'b', 'c'
...那些最终位于数组foo
中的args
方法内 - 这对于包装另一个方法非常方便,例如。
def some_method *args
do_something args.first
super *args # call the superclass's `some_method` with whatever args it would have received
end
顺便说一下,here's the official docs关于此运营商。