Sha256: b7985d596847b5e4d8e75dbc3e94d7b7bcc122adbdbd08231089fb3f10de10a2
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
module ValidatesTimeliness module AttributeMethods extend ActiveSupport::Concern module ClassMethods def define_timeliness_methods(before_type_cast=false) return if timeliness_validated_attributes.blank? timeliness_validated_attributes.each do |attr_name, type| define_timeliness_write_method(attr_name, type, timeliness_attribute_timezone_aware?(attr_name)) define_timeliness_before_type_cast_method(attr_name) if before_type_cast end end protected def define_timeliness_write_method(attr_name, type, timezone_aware) method_body, line = <<-EOV, __LINE__ + 1 def #{attr_name}=(value) @attributes_cache ||= {} @attributes_cache["_#{attr_name}_before_type_cast"] = value #{ "value = ValidatesTimeliness::Parser.parse(value, :#{type}, :timezone_aware => #{timezone_aware}) if value.is_a?(String)" if ValidatesTimeliness.use_plugin_parser } super end EOV class_eval(method_body, __FILE__, line) end def define_timeliness_before_type_cast_method(attr_name) method_body, line = <<-EOV, __LINE__ + 1 def #{attr_name}_before_type_cast _timeliness_raw_value_for('#{attr_name}') end EOV class_eval(method_body, __FILE__, line) end public def timeliness_attribute_timezone_aware?(attr_name) false end end module InstanceMethods def _timeliness_raw_value_for(attr_name) @attributes_cache && @attributes_cache["_#{attr_name}_before_type_cast"] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
validates_timeliness-3.0.0.beta.3 | lib/validates_timeliness/attribute_methods.rb |