Class: Bigamy::HasMany

Inherits:
Proxy
  • Object
show all
Defined in:
lib/bigamy/proxy.rb

Direct Known Subclasses

ARHasMany, MongoHasMany

Instance Attribute Summary

Attributes inherited from Proxy

#klass, #me, #methods_added, #name, #options, #primary_key

Instance Method Summary collapse

Methods inherited from Proxy

#create_accessors, #divorce_everyone, #initialize, #root_klass, #root_klass_name, #serialize_foreign_key, #target_klass, #target_klass_name

Constructor Details

This class inherits a constructor from Bigamy::Proxy

Instance Method Details

#add_getterObject



102
103
104
105
106
107
108
# File 'lib/bigamy/proxy.rb', line 102

def add_getter 
  me.class_eval "    def \#{name}\n      self.id.nil? ? nil : \#{target_klass}.all(:conditions => {:\#{foreign_key} => export_id_val(self.id)})\n    end\n  EOF\nend\n"

#add_setterObject



110
111
112
113
114
115
116
117
118
119
# File 'lib/bigamy/proxy.rb', line 110

def add_setter
  me.class_eval "    def \#{name}= val\n      raise NewRecordAssignment.new('All children must be saved') if val.select(&:new_record?).present?\n      raise NewRecordAssignment.new('Parent must be saved') if self.new_record?\n\n      val.each {|v| v.send \"\#{foreign_key}=\", export_id_val(self.id); v.save! }\n    end\n  EOF\nend\n"

#foreign_keyObject



98
99
100
# File 'lib/bigamy/proxy.rb', line 98

def foreign_key
  options[:foreign_key] || :"#{root_klass_name}_id"
end