method

remove_duplicate_results!

Importance_0
v2.2.1 - Show latest stable - 0 notes - Class: ActiveRecord::Associations::ClassMethods::JoinDependency
remove_duplicate_results!(base, records, associations) public

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/associations.rb, line 1845
          def remove_duplicate_results!(base, records, associations)
            case associations
              when Symbol, String
                reflection = base.reflections[associations]
                if reflection && [:has_many, :has_and_belongs_to_many].include?(reflection.macro)
                  records.each { |record| record.send(reflection.name).target.uniq! }
                end
              when Array
                associations.each do |association|
                  remove_duplicate_results!(base, records, association)
                end
              when Hash
                associations.keys.each do |name|
                  reflection = base.reflections[name]
                  is_collection = [:has_many, :has_and_belongs_to_many].include?(reflection.macro)

                  parent_records = records.map do |record|
                    descendant = record.send(reflection.name)
                    next unless descendant
                    descendant.target.uniq! if is_collection
                    descendant
                  end.flatten.compact

                  remove_duplicate_results!(reflection.class_name.constantize, parent_records, associations[name]) unless parent_records.empty?
                end
            end
          end
Register or log in to add new notes.