Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails: How to validate format only if value is present?

I would like to validate the format of a form value, allowing an empty value or requiring a specific format.

To validate a value against a format, this works fine:

validates :application_bundle_identifier, :format => {
  :with => /^[a-zA-Z0-9.-]+$/,
  :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters."
}

Now, I would like to allow users to not enter the value at all. In this case, I could tweak the regexp to ^[a-zA-Z0-9.-]*$, but this does not seem a very good Rails-way. Depending of the format, it might be not possible, or at least less clear.

What is the best practice in this case?

like image 508
Guillaume Avatar asked Jan 06 '12 19:01

Guillaume


1 Answers

You can use the option allow_blank: true to skip the validation when the attribute is blank/empty/nil.

https://guides.rubyonrails.org/active_record_validations.html#allow-blank

like image 85
Jordan Running Avatar answered Oct 16 '22 06:10

Jordan Running