module OData::Model::Associations::ClassMethods
Public Instance Methods
associated_with(association_name, options = {})
click to toggle source
# File lib/odata/model/associations.rb, line 14 def associated_with(association_name, options = {}) validate_association(association_name) register_association(association_name, options) create_association_accessors(association_name) nil end
create_association_accessors(association_name)
click to toggle source
# File lib/odata/model/associations.rb, line 41 def create_association_accessors(association_name) accessor_name = odata_associations[association_name][:as] || association_name.downcase.to_sym class_eval do define_method(accessor_name) do association_entities = odata_entity.associations[association_name] klass = self.class.odata_associations[association_name][:class_name] model_klass = klass.is_a?(Class) ? klass : klass.to_s.constantize if association_entities.is_a?(Enumerable) association_entities.collect do |entity| model = model_klass.new model.instance_variable_set(:@odata_entity, entity) model end else return nil if association_entities.nil? model = model_klass.new model.instance_variable_set(:@odata_entity, association_entities) model end end #define_method("#{attribute_name}=") do |value| # unless entity[property_map[attribute_name]] == value # send("#{attribute_name}_will_change!") if defined?(::ActiveModel) # end # # odata_entity[property_map[attribute_name]] = value #end end end
odata_associations()
click to toggle source
Returns the configuration for working with OData
associations. @return [Hash] @api private
# File lib/odata/model/associations.rb, line 24 def odata_associations if class_variable_defined?(:@@odata_associations) class_variable_get(:@@odata_associations) else class_variable_set(:@@odata_associations, {}) class_variable_get(:@@odata_associations) end end
register_association(association_name, options)
click to toggle source
# File lib/odata/model/associations.rb, line 37 def register_association(association_name, options) odata_associations[association_name] = options end
validate_association(association_name)
click to toggle source
# File lib/odata/model/associations.rb, line 33 def validate_association(association_name) raise ArgumentError unless odata_service.navigation_properties[odata_entity_set.type][association_name] end