Refactor allow_blank escape hatch to work better with params. #956
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #954
We originally had an escape hatch that would allow you to store an empty string (blank value) on a String type that wasn't nilable. Normally this would be treated as
nil
, but there may be cases where you still want to allow the empty string value while avoiding a nilable type.The issue though was it only worked when you passed the value by named arg, and it required shutting off ALL required validations. This meant that if you had another string value that you didn't want to be blank, it could still potentially sneak in.
This PR moves the logic to the column field itself with a new
allow_blank: true
option. Now you no longer need to addskip_default_validations
so all of your other required types can still get their validations. It also fixes working with params that you pass in. If you do happen to pass anil
value, you'll just get a runtime PG exception instead.