hi, i created a validation to prevent users to write text uppercase in my fields, i have writing the code on my class model like this:
Try this
def validates_on_yours_method_name size_letters = field.scan(/\w/).size size_invalid = field.scan(/[A-Z]/).size if size_invalid > 0 if (size_letters / size_invalid) < 4 and size_letters > 10 errors.add( field, I18n.t('activerecord.errors.
messages.uppercase’))
write_attribute(field, field.downcase)
end
end
end
Do you really need to "prevent" them, or can you just downcase it and be done? In any case, wouldn't the easiest check be something like
unless ( field.downcase == field ) errors.add( ... )
?
i have resolved with this:
#prevent users to write text uppercase, and reset field text to lowercase validates_each :title, :description do |model, attr, value| size_letters = value.scan(/\w/).size size_invalid = value.scan(/[A-Z]/).size if size_invalid > 0 if (size_letters / size_invalid) < 4 and size_letters > 10 model.errors.add( attr, I18n.t('activerecord.errors.messages.uppercase')) model.write_attribute(attr, value.downcase) end end end
for Hassan Schroeder: i want the user write in uppercae only certain letters( itials of names, letter after points, etc..). with my solution i concur the user to write in the text the 25% of letters uppercase.
thanks to all.