Skip to content

Instantly share code, notes, and snippets.

@carlosbrando
Created December 9, 2015 17:00
Show Gist options
  • Save carlosbrando/1445bedde80b49461402 to your computer and use it in GitHub Desktop.
Save carlosbrando/1445bedde80b49461402 to your computer and use it in GitHub Desktop.
module ActiveRecord
class Errors
def add(attribute, msg = @@default_error_messages[:invalid])
if replace_message?(msg)
msg = replace_message(attribute, msg)
attribute = :base
end
@errors[attribute.to_s] = [] if @errors[attribute.to_s].nil?
@errors[attribute.to_s] << msg
end
# true se a mensagem for alterável
def replace_message?(msg)
(msg =~ /{?}/) || (msg.starts_with?"!")
end
# muda a mensagem
def replace_message(attr, msg)
# se mensagem veio com {?}, agrega o nome do campo no meio do texto
if msg =~ /{?}/
msg.gsub(/{?}/, attr.to_s.humanize)
elsif msg.starts_with?("!") # se tiver ! no começo, remove
msg.from(1)
else
msg
end
end
def add_on_blank(attributes, msg = @@default_error_messages[:blank])
for attr in [attributes].flatten
value = @base.respond_to?(attr.to_s) ? @base.send(attr.to_s) : @base[attr.to_s]
# se mensagem veio com {?}, agrega o nome do campo no meio do texto
if replace_message?(msg)
add(:base, replace_message(attr, msg)) if value.blank?
else
add(attr, msg) if value.blank? # fluxo normal
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment