Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 何时使用百分比i方法创建带有符号的数组?_Ruby On Rails_Ruby_Cancan_Cancancan - Fatal编程技术网

Ruby on rails 何时使用百分比i方法创建带有符号的数组?

Ruby on rails 何时使用百分比i方法创建带有符号的数组?,ruby-on-rails,ruby,cancan,cancancan,Ruby On Rails,Ruby,Cancan,Cancancan,在Ruby中,有一种创建符号数组的巧妙方法。 百分比i方法 %i[a b c] 我在一个基于团队的环境中工作,虽然我可以看到这对于一个大的数组列表很有用,但我知道这已经被实现了 a = %i[] # Empty array 坎坎能力 can :manage, :all cannot %i[create show update], AModel cannot %i[create], BModel cannot %i[show], CModel 使用此方法初始化所有数组好

在Ruby中,有一种创建符号数组的巧妙方法。 百分比i方法

%i[a b c]
我在一个基于团队的环境中工作,虽然我可以看到这对于一个大的数组列表很有用,但我知道这已经被实现了

a = %i[]    # Empty array
坎坎能力

  can :manage, :all
  cannot %i[create show update], AModel
  cannot %i[create], BModel
  cannot %i[show], CModel
使用此方法初始化所有数组好吗,还是仅使用此方法

  cannot [:create, :show, :update], AModel

我知道没有“正确”的方法,但我希望利弊能帮助我决定

就语言本身而言,两者之间没有重要区别,因此这实际上是一个偏好问题。就我个人而言,我认为符号文本数组(
[:create,:show,:update]
)看起来更像Ruby,这就是我要使用的,但您应该与您的团队讨论一下。最重要的是保持一致,你不想独自做出决定


在使用<代码> %i <代码>的一般情况下,而不是写出一个文字符号数组,我会考虑使用前者,如果它是具有某种意义的符号列表,比如类常量或某物,并且不止是一对。我使用Ruby已经有一段时间了,直到这个问题出现之前,我并没有真正意识到

%I
的存在,所以它的使用相对不常见。它可能不在一般Rubyist的词汇表中,因此这可能是另一个远离它的原因。

旁注:
a=%i[]
没有意义,它与
a=[]
相同。这是ruby:随心所欲。对任何事情都没有影响。只是偏好问题。旁注:
can:manage,:all
可以写成
can*%i[manage all]
,因为您喜欢
%i