Sha256: 1fa16830f86bcf0815656abdf701a9e67cea0c2488cb6febd36ee78a4725d661

Contents?: true

Size: 670 Bytes

Versions: 16

Compression:

Stored size: 670 Bytes

Contents

require 'active_record'

module DistinctDistinctPatch
  def construct_limited_ids_condition(relation)
    orders = relation.order_values.map { |val| val.presence }.compact
    values = @klass.connection.distinct("#{@klass.connection.quote_table_name table_name}.#{primary_key}", orders)

    relation = relation.dup.select(values)
    relation.uniq_value = nil

    id_rows = @klass.connection.select_all(relation.arel, 'SQL', relation.bind_values)
    ids_array = id_rows.map {|row| row[primary_key]}

    ids_array.empty? ? raise(ActiveRecord::ThrowResult) : table[primary_key].in(ids_array)
  end
end

class ActiveRecord::Relation
  include DistinctDistinctPatch
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
fe-2.1.6.1 lib/distinct_distinct_patch.rb
fe-2.1.6 lib/distinct_distinct_patch.rb
fe-2.1.5 lib/distinct_distinct_patch.rb
fe-2.1.4 lib/distinct_distinct_patch.rb
fe-2.1.3 lib/distinct_distinct_patch.rb
fe-2.1.2 lib/distinct_distinct_patch.rb
fe-2.1.1 lib/distinct_distinct_patch.rb
fe-2.0.8 lib/distinct_distinct_patch.rb
fe-2.0.6 lib/distinct_distinct_patch.rb
fe-2.0.5 lib/distinct_distinct_patch.rb
fe-2.0.4 lib/distinct_distinct_patch.rb
fe-2.0.3 lib/distinct_distinct_patch.rb
fe-2.0.2 lib/distinct_distinct_patch.rb
fe-2.0.1 lib/distinct_distinct_patch.rb
fe-2.0.0 lib/distinct_distinct_patch.rb
fe-1.0.0 lib/distinct_distinct_patch.rb