2012-10-03 11 views
6

ho questo codice:modo migliore per scrivere @ instances.count> 0

<% if @states.count > 0 %> # @states is an active record collection 

mi sento come ci dovrebbe essere un modo migliore per scrivere questo.

Sto cercando qualcosa di simile:

<% if @states.not_empty? %> 

Mi rendo conto che è piccolo cambiamento ma sarebbe una pulitura benvenuto.

risposta

8

probabilmente avrete bisogno di any?

http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-any-3F

<% if @states.any? %> 
    Do stuff here if @states has at least one result 
<% end %> 
+0

perché 'qualsiasi?' ActiveRecord? 'any?' scorre in una collezione enumerabile e restituisce true se il predicato passato nel blocco restituisce true per ** qualsiasi ** elemento nella collezione. L'OP vuole testare la collezione nel suo insieme – iGbanam

+2

Per un 'Array' (o in particolare,' Enumerable'), sì, ma l'uso dell'OP di ERb suggerisce che potrebbe funzionare con una raccolta ActiveRecord. 'ActiveRecord :: Relation''s' any? 'Non richiede un blocco, controlla solo se la raccolta è vuota o meno. (Anche se la versione di 'Array' non * richiede * un blocco, sia.) –

+1

Esiste una versione con un blocco che scansionerà l'elenco per le corrispondenze, ma questo è facoltativo. – tadman

8

Come su

<% unless @states.empty? %> 
Problemi correlati