global
def self.define_write_method_for_time_zone_conversion(attr_name)
def self.define_write_method_for_time_zone_conversion(attr_name) method_body = <<-EOV def #{attr_name}=(time) unless time.acts_like?(:time) time = time.is_a?(String) ? (I18n.delocalization_enabled? ? Time.zone.parse_localized(time) : Time.zone.parse(time)) : time.to_time rescue time end time = time.in_time_zone rescue nil if time write_attribute(:#{attr_name}, time) end EOV evaluate_attribute_method attr_name, method_body, "#{attr_name}=" end