Comment faire: default => 0 et: null => false diffèrent pour les champs entiers dans les migrations?

Si j’utilise une migration pour mettre à jour une firebase database et que j’ajoute un champ entier comme celui-ci:

t.integer :foo :default => 0, :null => false 

Quel est l’état par défaut des enregistrements existants et nouveaux dans la firebase database? J’espère que la réponse est: – Les deux liront foo comme 0.

Est-ce que default => 0 est nécessaire si j’ai: null => false?

Juste essayer de comprendre la différence entre les deux …

:null => false indique à votre firebase database de ne pas accepter les valeurs NULL .

:default => 0 fait deux choses:

  1. Dites à votre firebase database d’utiliser ‘0’ comme valeur par défaut lorsque NULL ou rien n’est spécifié dans une requête.
  2. Dites aux rails d’utiliser “0” comme valeur par défaut lors de la création d’un nouvel object.

Le point 2 s’assure que lorsque vous enregistrez votre nouvel object, vous avez réellement une valeur valide.

Pour répondre à votre question: Si vous ne voulez pas de valeurs NULL dans votre firebase database, définissez :null => false , sinon utilisez simplement le paramètre :default . Attention, ‘0’ et NULL ne sont pas les mêmes.

Ne pas avoir de valeurs NULL peut être important à des fins d’indexation ou si vous devez fournir un access direct à la firebase database à un tiers.