Class: Fog::Associations::ManyIdentities

Inherits:
Default
  • Object
show all
Defined in:
lib/fog/core/associations/many_identities.rb

Overview

Fog Multiple Association

This class handles multiple association between the models. It expects the provider to return a collection of ids. The association models will be loaded based on the collection of ids.

Instance Attribute Summary

Attributes inherited from Default

#aliases, #as, #association_class, #model, #name

Instance Method Summary collapse

Methods inherited from Default

#create_aliases, #create_mask, #initialize

Constructor Details

This class inherits a constructor from Fog::Associations::Default

Instance Method Details

#create_getterObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fog/core/associations/many_identities.rb', line 19

def create_getter
  model.class_eval <<-EOS, __FILE__, __LINE__
    def #{name}
      return [] if associations[:#{name}].nil?
      data = Array(associations[:#{name}]).map do |association|
        service.send(self.class.associations[:#{name}]).get(association)
      end
      #{association_class}.new(data)
    end
  EOS
end

#create_setterObject



9
10
11
12
13
14
15
16
17
# File 'lib/fog/core/associations/many_identities.rb', line 9

def create_setter
  model.class_eval <<-EOS, __FILE__, __LINE__
    def #{name}=(new_#{name})
      associations[:#{name}] = Array(new_#{name}).map do |association|
                                 association.respond_to?(:identity) ? association.identity : association
                               end
    end
  EOS
end