feat!: redesign required option, add validates option#7
Open
feat!: redesign required option, add validates option#7
Conversation
jhurd2326
approved these changes
Dec 18, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What changed
required: truenow raises anArgumentErrorimmediately if the argument isn't provided.Before this change,
required: trueadded an ActiveModel presence validation. This was problematic because:blank?on the value, which triggers database queries on ActiveRecord relationsvalid?, not at instantiationNow,
required: truesimply checks if the key was included in the arguments hash. If not, it raisesArgumentErrorright away.New
validates:optionIf you want ActiveModel validations, there's now an explicit
validates:option:Migration
A rake task is included to automatically update your services:
This adds
validates: { presence: true }to anyargumentwithrequired: true, preserving the old behavior.Manual migration
If you were relying on
required: trueto validate that values aren't blank:If you just wanted to ensure the argument was passed, no changes needed.