Arrays mit unterschiedlichen Modellen separieren 0

Posted by fwoeck
on Sunday, October 26

Ein Array, das Objekte unterschiedlicher Modelle enthält, kann man mithilfe ihres Antwortverhaltens separieren – vorausgesetzt, sie reagieren auf unterschiedliche Methoden:

@projects = results.select {|s| s.respond_to?(:project)}.map(&:project)

@people = results.select {|s| s.respond_to?(:name)}

Im Falle der @projects sind die zu sammelnden Projekte über einen Proxy an die result-Mitglieder gebunden.

Besser:

Eine ebenso einfache wie genaue Möglichkeit ist die, den Klassennamen abzufragen:

@people = results.select {|s| s.class.name == "Person"}