:null => false
tells your database not to accept NULL
values.
:default => 0
does two things:
- Tell your database to use '0' as the default value when
NULL
or nothing is specified in a query.
- Tell rails to use '0' as a default value when creating a new object.
Point 2 makes sure that when you save your new object, you actually have a valid value in place.
To answer your question: If you don't want NULL
values in your database, set :null => false
, otherwise just use the :default
parameter. Mind you, '0' and NULL
are not the same things.
Not having NULL
values might be important for indexing purposes or if you need to provide direct database access to a third party.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…