当我运行这样的命令时:
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)}
答案 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
,因为它代表您要实现的比较。