module Nativepluck::InstanceMethods

Public Instance Methods

nativepluck(*column_names) click to toggle source
# File lib/nativepluck.rb, line 64
def nativepluck(*column_names)
  # Extracted (before modifications) from:
  # ruby-2.5.0/gems/activerecord-5.2.1/lib/active_record/relation/calculations.rb
  if loaded? && (column_names.map(&:to_s) - @klass.attribute_names - @klass.attribute_aliases.keys).empty?
    return records.nativepluck(*column_names)
  end

  if has_include?(column_names.first)
    relation = apply_join_dependency
    relation.nativepluck(*column_names)
  else
    enforce_raw_sql_whitelist(column_names)
    relation = spawn
    relation.select_values = column_names.map { |cn|
      @klass.has_attribute?(cn) || @klass.attribute_alias?(cn) ? arel_attribute(cn) : cn
    }
    Nativepluck.nativepluck(relation)
  end
end