Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 Rails 5.2-尝试定义枚举时出错_Ruby On Rails_Ruby_Activerecord_Enums_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails 5.2-尝试定义枚举时出错

Ruby on rails Rails 5.2-尝试定义枚举时出错,ruby-on-rails,ruby,activerecord,enums,ruby-on-rails-5,Ruby On Rails,Ruby,Activerecord,Enums,Ruby On Rails 5,我的类使用值enum source:[:pdf,:zip]定义了一个枚举。每次启动Rails应用程序时,都会出现以下错误: ArgumentError: You tried to define an enum named "source" on the model "ExtractionRule", but this will generate a class method "zip", which is already defined by ActiveRecord::Relation.

我的类使用值
enum source:[:pdf,:zip]
定义了一个枚举。每次启动Rails应用程序时,都会出现以下错误:

ArgumentError: You tried to define an enum named "source" on the model "ExtractionRule", 
but this will generate a class method "zip", which is already defined by ActiveRecord::Relation.
在更新到5.2.4之前,此操作没有问题。ActiveRecord库上是否有任何更新阻止使用值
:zip创建枚举

发行说明中没有其他说明。我已经查看了Rails的源代码,但找不到任何可能导致此问题的内容

注意:将值的名称更改为类似
[:pdf\u type,:zip\u type]
的其他名称可以解决此问题,但我宁愿保留代码,因为这在过去是有效的

更新
我通过使用
前缀::source
解决了这个问题。这样我就可以为枚举保留相同的值。无论如何,我都不知道为什么会发生错误。

所讨论的方法实际上是Ruby标准库的哪一部分:

irb(main):049:0> ['a','b', 'c'].zip([1,2,3])
=> [["a", 1], ["b", 2], ["c", 3]]
它将数组合并在一起
ActiveRecord::Relation
包含可枚举项,这使得它的行为类似于数组

在更新到5.2.4之前,这方面没有问题。有吗 ActiveRecord库上阻止创建带有 价值:拉链


在更新之前,你有一个古老的Ruby版本吗?如前所述,此方法是Ruby的一部分,而不是AR。实际上,这是一个完全无关的问题-定义与enumerable冲突的类方法不是一个好主意,因为您迟早会与依赖于实际压缩数组的代码进行交互。

Ruby版本从2.4.5更新为2.5.5。哦,所以
#zip
属于
可枚举的
。我注意到
ActiveRecord::Relation
中包含了
Enumerable
,但我没有加入这些点。感谢@max的澄清