2012-08-14 12 views
5

C'è qualcosa di sbagliato nell'impostazione predefinita di un campo booleano su nil anziché false con una migrazione ActiveRecord da utilizzare con Postgres?Migrazione delle rotaie: va bene usare 'nil' come valore predefinito per un campo booleano?

Mi piace il modo in cui fornisce un po 'di dati extra, anche se il campo è stato contrassegnato come vero o falso.

+1

Dipende se il campo ha effettivamente tre stati (vero, falso, sconosciuto) o solo due (vero, falso). –

+0

In realtà non dipendo dal terzo stato "sconosciuto", solo un dato interessante che posso controllare. Il modo in cui controllo le valute booleane non viene eliminato dall'uso di nil. – bevanb

+3

Non farlo se non ne hai bisogno. La mia politica è di rendere tutto NOT NULL a meno che non abbia una buona ragione per consentire i NULL, le cose vanno più facilmente in questo modo. –

risposta

7

non c'è nulla che impedisca di utilizzare nil su booleana - ma mi piace personalmente i miei booleani per essere vero o falso, ho trovato che avere zero può portare a qualche codice brutto

+1

codice brutto davvero. Se hai bisogno del terzo valore 'nil' /' unknown', allora dovresti usare un enum o una macchina a stati, penso. Altrimenti, stai solo combattendo le cose e l'onere è su di te per assicurarti di controllare il valore "nullo" ** ovunque **. –

Problemi correlati