Rails: Using same custom validation method for multiple models -
i have method in 3 models, i'd extract , dry things up. i'm having problem default value of attr. when field empty evaluated empty string "" instead of nil, have write conditional in method avoid adding "http" empty string.
where should put method , how can include in models?
should optimize method? if so, , how can set default attr value nil (rails/db/both)?
before_validation :format_website def format_website if website == "" self.website = nil elsif website.present? && !self.website[/^https?/] self.website = "http://#{self.website}" end end
you can put method in app/models/concerns folder, example, validatable module (i.e. validatable.rb):
module concerns::validatable extend activesupport::concern def format_website if website.blank? self.website = nil elsif !self.website[/^https?/] self.website = "http://#{self.website}" end end end and include in each models
include concerns::validatable
Comments
Post a Comment