Sha256: 0a7f23a1cdd0014f408326f046cd7fc75a638855f6e258bb38c42d8a53df506c

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

module EmailAttribute
  module Attribute
    extend ActiveSupport::Concern

    module ClassMethods
      def email_address_list_attribute(*attributes)
        options = attributes.extract_options!

        attributes.each do |attribute|
          serialize attribute, EmailAttribute::List

          method_body, line = <<-EOV, __LINE__ + 1
            def #{attribute}=(email_address)
              list = EmailAttribute::List.new(email_address) rescue email_address
              write_attribute(:#{attribute}, list)
            end
          EOV

          class_eval method_body, __FILE__, line
        end
      end

      def email_address_attribute(*attributes)
        options = attributes.extract_options!

        attributes.each do |attribute|
          serialize attribute, EmailAttribute::SingleAddress

          method_body, line = <<-EOV, __LINE__ + 1
            def #{attribute}=(email_address)
              write_attribute(:#{attribute}, EmailAttribute::SingleAddress.new(email_address))
            end
          EOV

          class_eval method_body, __FILE__, line
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
email_attribute-0.0.2 lib/email_attribute/attribute.rb
email_attribute-0.0.1 lib/email_attribute/attribute.rb