Ответ 1
:null => false
указывает вашей базе данных не принимать значения NULL
.
:default => 0
выполняет две вещи:
- Сообщите вашей базе данных, что "0" используется как значение по умолчанию, когда
NULL
или ничего не указано в запросе. - Сканировать рельсы для использования "0" в качестве значения по умолчанию при создании нового объекта.
Точка 2 гарантирует, что при сохранении нового объекта у вас действительно есть действующее значение.
Чтобы ответить на ваш вопрос: если вы не хотите использовать значения NULL
в своей базе данных, установите :null => false
, иначе просто используйте параметр :default
. Имейте в виду, что "0" и NULL
- это не одно и то же.
Нельзя иметь значения NULL
для целей индексирования или если вам необходимо обеспечить прямой доступ к базе данных третьим лицам.