Ruby on rails 当使用两个参数时,Eql命令返回一个空数组

Ruby on rails 当使用两个参数时,Eql命令返回一个空数组,ruby-on-rails,Ruby On Rails,当我像这样运行命令时: related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].eql?(a.attachment_type)} related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].include?(a.att

当我像这样运行命令时:

related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].eql?(a.attachment_type)}
related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].include?(a.attachment_type)}
上面的命令返回空[]

所以基本上我想知道我是否可以使用.eql?函数是否具有两个参数。 因为如果我以下面的方式通过,上面的陈述就可以了:

related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| "a".eql?(a.attachment_type)}

使用包括,如下所示:

related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].eql?(a.attachment_type)}
related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].include?(a.attachment_type)}
对于您的情况,请使用
include?
而不是
eql?


.eql?
仅使用一个参数,但另一方面,它也可以是数组。在您的情况下,
[“a”,“b”]
仅与
“a”
“b”
进行比较,因此它永远不会相等。如果它是
[“a”,“b”]
,那么它是相等的。因此,对于您的案例,请使用
包含?
而不是
eql
,因为它将代表您想要实现的比较。

什么是
相关文档
,什么是
附件
。我们还没有学会阅读思想谢谢,我很高兴它帮助了你。如果您愿意,您可以将其标记为“已回答”,这样其他任何回答此问题的人都会知道,答案中包含的信息将导致此问题的解决方案。