lib/octopus/association.rb in ar-octopus-0.0.19 vs lib/octopus/association.rb in ar-octopus-0.0.20

- old
+ new

@@ -20,113 +20,8 @@ options[:before_remove] << :set_connection else options[:before_remove] = :set_connection end end - - def collection_reader_method(reflection, association_proxy_class) - define_method(reflection.name) do |*params| - force_reload = params.first unless params.empty? - reload_connection() - - association = association_instance_get(reflection.name) - - unless association - association = association_proxy_class.new(self, reflection) - association_instance_set(reflection.name, association) - end - - reflection.klass.uncached { association.reload } if force_reload - - association - end - - define_method("#{reflection.name.to_s.singularize}_ids") do - reload_connection() - if send(reflection.name).loaded? || reflection.options[:finder_sql] - send(reflection.name).map(&:id) - else - if reflection.through_reflection && reflection.source_reflection.belongs_to? - through = reflection.through_reflection - primary_key = reflection.source_reflection.primary_key_name - send(through.name).select("DISTINCT #{through.quoted_table_name}.#{primary_key}").map!(&:"#{primary_key}") - else - send(reflection.name).select("#{reflection.quoted_table_name}.#{reflection.klass.primary_key}").except(:includes).map!(&:id) - end - end - end - end - - def association_constructor_method(constructor, reflection, association_proxy_class) - define_method("#{constructor}_#{reflection.name}") do |*params| - reload_connection() - attributees = params.first unless params.empty? - replace_existing = params[1].nil? ? true : params[1] - association = association_instance_get(reflection.name) - - unless association - association = association_proxy_class.new(self, reflection) - association_instance_set(reflection.name, association) - end - - if association_proxy_class == ActiveRecord::Associations::HasOneAssociation - return_val = association.send(constructor, attributees, replace_existing) - else - return_val = association.send(constructor, attributees) - end - - if should_set_current_shard? - return_val.current_shard = self.current_shard - end - - return_val - end - end - - def association_accessor_methods(reflection, association_proxy_class) - define_method(reflection.name) do |*params| - reload_connection() - force_reload = params.first unless params.empty? - association = association_instance_get(reflection.name) - - if association.nil? || force_reload - association = association_proxy_class.new(self, reflection) - retval = force_reload ? reflection.klass.uncached { association.reload } : association.reload - if retval.nil? and association_proxy_class == ActiveRecord::Associations::BelongsToAssociation - association_instance_set(reflection.name, nil) - return nil - end - association_instance_set(reflection.name, association) - end - - association.target.nil? ? nil : association - end - - define_method("loaded_#{reflection.name}?") do - reload_connection() - association = association_instance_get(reflection.name) - association && association.loaded? - end - - define_method("#{reflection.name}=") do |new_value| - reload_connection() - association = association_instance_get(reflection.name) - - if association.nil? || association.target != new_value - association = association_proxy_class.new(self, reflection) - end - - association.replace(new_value) - association_instance_set(reflection.name, new_value.nil? ? nil : association) - end - - define_method("set_#{reflection.name}_target") do |target| - return if target.nil? and association_proxy_class == ActiveRecord::Associations::BelongsToAssociation - reload_connection() - association = association_proxy_class.new(self, reflection) - association.target = target - association_instance_set(reflection.name, association) - end - end end -ActiveRecord::Base.extend(Octopus::Association) +ActiveRecord::Base.extend(Octopus::Association) \ No newline at end of file