Class: Bigamy::HasMany
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Proxy
#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_getter ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/bigamy/proxy.rb', line 110 def add_getter me.class_eval <<-EOF def #{name} self.#{primary_key}.nil? ? nil : #{target_klass}.all(:conditions => {:#{foreign_key} => export_id_val(self.#{primary_key})}) end EOF end |
#add_setter ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/bigamy/proxy.rb', line 118 def add_setter me.class_eval <<-EOF def #{name}= val val ||= [] if val == [] new_id = nil else raise NewRecordAssignment.new('All children must be saved') if val.select(&:new_record?).present? raise NewRecordAssignment.new('Parent must be saved') if self.new_record? new_id = export_id_val(self.#{primary_key}) end #{name}.each {|x| x.update_attributes :#{foreign_key} => nil } val.each {|v| v.send "#{foreign_key}=", new_id; v.save! } end EOF end |
#foreign_key ⇒ Object
106 107 108 |
# File 'lib/bigamy/proxy.rb', line 106 def foreign_key [:foreign_key] || :"#{root_klass_name}_id" end |