2011-03-19 16 views
15

El siguiente código funciona, pero ¿puede decirme si esta es la forma correcta de hacerlo?Buscar si una matriz de objetos incluye un atributo con un valor específico

Tengo una matriz de objetos de posición y quiero comprobar si contiene un objeto que atribuir 'oculto' tiene " 'valor falso:

<% if positions.collect{|position| position.hidden}.include?(false) %> 
    ... 
<% end %> 
+2

Si lo desea, otra forma de simplificar esto es: 'if positions.map (&: hidden) .include? (False)'. (Advertencia: este y el enfoque original se comportarán de manera diferente a las respuestas dadas a continuación si el atributo "oculto" alguna vez devuelve cero). – antinome

Respuesta

23
<% if positions.any?{|position| !position.hidden} %> 
    ... 
<% end %> 

Utilizando el any? método

2

if positions.any? {|position| not position.hidden}

0

también se puede usar el método all?:

<% unless positions.all? {|position| position.hidden} %> 
... 
<% end %> 
Cuestiones relacionadas