Ho un campo tipo in un modello chiamato utente che è un int nel db. Il valore delle specifiche int è il tipo di negozio che è. Esempio:Il miglior posto per memorizzare costanti specifiche del modello nei binari 3.1?
- 0 = mamma
- 1 = padre
- 2 = nonna
- e così via
Ho diversi altri campi come questo in modo è eccessivo per creare tabelle di associazione .
Invece di cercare quei valori int oltre il posto nelle istruzioni condizionali nella logica del modello e del controllore, c'è un posto nelle rotaie per memorizzare queste costanti.
In modo che potessi farlo dai miei modelli e controller?
if myuser.type == MOM
elsif myuser.type == GRAND_MOTHER
EDIT: Soluzione sono andato con alla fine:
Nel modello:
# constants
TYPES = {
:mom => 0,
:dad => 1,
:grandmother => 2,
:grandfather => 3
}
Nella logica:
if u.type == User::TYPES[:mom]
Anche se è più lungo, mi sono sentito è più intuitivo per gli altri sviluppatori quando leggono il mio codice. Grazie a Taro qui sotto per questa soluzione.
Ottima soluzione. C'è un modo per usare i valori nel compito? Qualcosa come ... 'u.type = MOM' ... altrimenti nel caso in cui un valore modificato nel tempo richiederebbe modifiche a quel valore in più file. – Hopstream
Inserisci la costante all'interno della classe e fai riferimento ad essa come 'Utente :: MOM'. – d11wtq
È possibile utilizzare questa stessa notazione per accedere al metodo in un modello senza creare prima l'oggetto come in PHP? Ottengo un errore "metodo non definito" se faccio qualcosa come 'ModelName :: mydef()' – Hopstream