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

时间:2016-04-27 07:58:13

标签: ruby-on-rails

当我运行这样的命令时:

related_attchments = related_documents.collect{|d| d.attachments.all}.flatten.select{|a| [“a”,“b”].eql?(a.attachment_type)}

上面的命令它返回空[]

所以基本上我想知道我是否可以使用.eql?有两个参数的功能与否。 因为如果我通过以下方式,上述声明可以正常工作:

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

1 个答案:

答案 0 :(得分:0)

使用include,如下所示:

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"],那么它将是平等的。因此,对于您的案例,请使用include?代替eql,因为它代表您要实现的比较。