This blog is part of our Rails 5 series.
In Rails 5, whenever we define a
it is required to have the associated record
present by default after this change.
It triggers validation error if associated record is not present.
As we can see,
we can’t create any
without having an associated
How to achieve this behavior before Rails 5
In Rails 4.x world To add validation on
we need to add option
required option is set to
Opting out of this default behavior in Rails 5
We can pass
optional: true to the
which would remove this validation check.
But, what if we do not need this behavior anywhere in our entire application and not just a single model?
Opting out of this default behavior for the entire application
New Rails 5 applications come
with an initializer named
Rails.application.config.active_record.belongs_to_required_by_default = true
For new Rails 5 application the value is set to
We can turn off this default behavior
by changing the value to
How older applications will work with this change?
The initializer configuration will be present only in newly generated Rails 5 apps. If you are upgrading from an older version of Rails, you can add this initializer yourself to enable this change for the entire application.