Module: EmailAttribute::Attribute::ClassMethods

Defined in:
lib/email_attribute/attribute.rb

Instance Method Summary collapse

Instance Method Details

#email_address_attribute(*attributes) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/email_attribute/attribute.rb', line 23

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

#email_address_list_attribute(*attributes) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/email_attribute/attribute.rb', line 6

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