si può rendere un po 'più corta:
financial_document.assets ? financial_document.assets.length : '0'
beca utilizzare
financial_document.assets == !financial_document.assets.nil?
ma in generale, IMHO non c'è modo meno ripetitivo, solo vari soluzioni alternative. (E questa è una delle cose che non mi piacciono molto in Ruby.) Puoi assicurarti che gli oggetti non siano nulli (come suggeriscono altre persone qui) - ma non puoi farlo ovunque. È possibile eseguire il wrap del codice di controllo nullo nei metodi di supporto o nei blocchi di avvio immediato.
Per esempio, piuttosto che aggiungere il metodo di lunghezza per oggetto nil (che è secondo me un hack sporco), avevo scritto un metodo di supporto - una "lunghezza di getter":
def fd_length(financial_document)
financial_document.assets ? financial_document.assets.length : '0'
end
fonte
2009-06-27 07:15:00
prova è stata backport in Ruby 1.8 per Rails 2.3 - vedere http://railscasts.com/episodes/152-rails-2-3-extras –