Sha256: 3c2cd7e54edcd3396ea8bad029e5e7e5efe837fb3c764a56cf077bb64d9f084f

Contents?: true

Size: 852 Bytes

Versions: 1

Compression:

Stored size: 852 Bytes

Contents

module FlexibleEnum
  class SetterMethodConfigurator < AbstractConfigurator
    def apply
      attribute_name = self.attribute_name

      elements.each do |element_name, element_config|
        bang_method_name = element_config[:setter] || "#{element_name}!"
        attributes = {attribute_name => element_config[:value]}
        timestamp_attribute_name = element_config[:timestamp_attribute] || element_name

        add_instance_method(bang_method_name) do
          time = Time.now.utc
          attributes["#{timestamp_attribute_name}_on".to_sym] = time.to_date if self.class.attribute_method?("#{timestamp_attribute_name}_on")
          attributes["#{timestamp_attribute_name}_at".to_sym] = time if self.class.attribute_method?("#{timestamp_attribute_name}_at")
          update_attributes!(attributes)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flexible_enum-0.4.2 lib/flexible_enum/setter_method_configurator.rb