This is the order of execution during the insertion of an ActiveRecord object:
(-) save
(-) valid
(1) before_validation
(-) validate *** BOOM
(2) after_validation
(3) before_save *** too late
(4) before_create
(-) create
(5) after_create
(6) after_save
(7) after_commit
This means the validation is indeed run before your callback is called. To prevent this issue, you can use before_validation
instead of before_create
Source: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html