Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Rails] Model e sovrascrittura metodo

    Ciao a tutti,

    avrei bisogno di una mano per risolvere un problema.

    Nel Model "Product" ho inserito il seguente codice:

    codice:
    def price
      sprintf('%.2f',self[:price])
    end
    per fare in modo di mostrare nelle varie "View" il prezzo di un prodotto sempre con 2 cifre dopo la virgola.
    Tutto ok ma mi sono accorto ora che se cerco di inserire un prodotto con prezzo "vuoto" mi si genera un errore:

    "TypeError in ProductsController#create
    can't convert nil into Float"


    Per "silenziare" l'eccezione ho riscritto il metodo in questo modo:

    codice:
     def price
        begin
          sprintf('%.2f',self[:price])
        rescue      
        end
     end
    ma non credo sia il modo corretto di operare.

    Potete illuminarmi?

    Tnx!

  2. #2
    Una cosa del genere può essere la soluzione migliore?

    codice:
    def price    
      sprintf('%.2f',self[:price]) unless self[:price].nil?    
    end

  3. #3
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Il sistema con le eccezioni mi pare proprio brutto. L'altro è meglio, difficile stabilire se sia il migliore.
    Io lo avrei scritto così
    codice:
    # assunto che un prezzo nullo abbia senso rappresentarlo con la stringa "0.00"
    def price
      "%.2f" % (read_attribute(:price) or 0)
    end
    ma è più che altro questione di gusti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.