2016-04-27 7 views
-2

Wenn ich den Befehl so leite:eql Befehl gibt ein leeres Array, wenn zwei Parameter mit

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

der obige Befehl leer zurückkehrt []

also im Grunde möchte ich, ob ich wissen kann .eql verwenden? Funktion mit zwei Parametern oder nicht. Da obige Aussage funktioniert gut, wenn ich in folgenden Art und Weise passieren:

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

was ist das 'verwandte_Dokumente', was ist' attachmets'. wir haben noch nicht gelernt, Gedanken zu lesen –

Antwort

0

Verwendung umfassen, wie folgt aus:

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

Für Ihren Fall Gebrauch include? statt eql?

.eql? Verwendung nur einen Parameter , aber auf der anderen Seite kann es auch ein Array sein. In Ihrem Fall ["a","b"] wird nur mit "a" oder "b" verglichen, so wird es nie gleich sein. Wenn es die ["a","b"] wäre, dann wäre es gleich. Also, für Ihren Fall verwenden Sie include? anstelle von eql, da es den Vergleich darstellt, den Sie erreichen möchten.

+0

Danke. Es hat für mich funktioniert. – palak

+0

Danke, ich bin froh, dass es dir geholfen hat. Sie können es als "beantwortet" markieren, wenn Sie möchten, also würde jeder andere, der zu dieser Frage kommt, wissen, dass die Antwort Informationen enthält, die zur Lösung dieses Problems führen. – Aleks

Verwandte Themen