Adding a :null => false
means that this is a database restriction, i.e. under no circumstance will the database allow a null value.
Adding a presence: true
is a model level validation so will take place before the object is inserted into the database. There may be a case you want to break these validations (for example edge cases or in your specs) You can then skip validation using :validates => false
and the object will still go into the database, with a null DB restriction, this won't happen.