PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come mappare l'attributo intero di un modello su una stringa?

Controlla enum di ActiveRecord - doc .

Qui puoi configurare il tuo :status :

class Hotel < ActiveRecord::Base
  enum status: { waiting_contract: 1, designing: 2 }

  def format_status
    status.to_s.humanize
  end
end

Creerà metodi come questo:

hotel.waiting_contract?
hotel.designing?

hotel.waiting_contract!
hotel.format_status # => "Waiting contract"

Spero di esserti stato d'aiuto!

AGGIORNAMENTO

Funzionalità simili possono essere ottenute sovrascrivendo lo status metodo stesso, sebbene sia più consigliato avere metodi separati:

class Hotel < ActiveRecord::Base
  enum status: { waiting_contract: 1, designing: 2 }

  def status
    super.to_s.humanize
  end
end

Inoltre, decoratori sono qualcosa che dovresti esaminare per metodi specifici di visualizzazione.