Skip to content

Instantly share code, notes, and snippets.

@rodrigomanhaes
Created September 10, 2010 03:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rodrigomanhaes/573044 to your computer and use it in GitHub Desktop.
Save rodrigomanhaes/573044 to your computer and use it in GitHub Desktop.
# encoding: utf-8
module BrazilianDate
def use_in_brazilian_format(*fields)
unless methods.include?(:validate_dates)
validate :validate_dates
define_method :validate_dates do
(@date_errors ||= {}).each_pair do |field, message|
errors.add("#{field}_br".to_sym, message)
end
end
end
fields.each do |field|
self.class_eval do
define_method "#{field}_br=" do |value|
if value.blank?
self.send "#{field}=", nil
else
day, month, year = value.split('/')
begin
self.send "#{field}=", value.to_date
rescue ArgumentError, NoMethodError
@date_errors ||= {}
@date_errors["#{field}".to_sym] = "inválida"
self.send "#{field}=", value
end
end
end
define_method "#{field}_br" do
self.send("#{field}").to_s_br
end
end
end
end
end
ActiveRecord::Base.extend BrazilianDate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment