instance method ids

Ruby on Rails 7.1.6

Since v4.0.13

Available in: v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

ids()

Returns the base model’s ID’s for the relation using the table’s primary key

Person.ids # SELECT people.id FROM people
Person.joins(:companies).ids # SELECT people.id FROM people INNER JOIN companies ON companies.id = people.company_id
Source
# File activerecord/lib/active_record/relation/calculations.rb, line 361
    def ids
      primary_key_array = Array(primary_key)

      if loaded?
        result = records.map do |record|
          if primary_key_array.one?
            record._read_attribute(primary_key_array.first)
          else
            primary_key_array.map { |column| record._read_attribute(column) }
          end
        end
        return @async ? Promise::Complete.new(result) : result
      end

      if has_include?(primary_key)
        relation = apply_join_dependency.group(*primary_key_array)
        return relation.ids
      end

      columns = arel_columns(primary_key_array)
      relation = spawn
      relation.select_values = columns

      result = if relation.where_clause.contradiction?
        ActiveRecord::Result.empty
      else
        skip_query_cache_if_necessary do
          klass.connection.select_all(relation, "#{klass.name} Ids", async: @async)
        end
      end

      result.then { |result| type_cast_pluck_values(result, columns) }
    end

Defined in activerecord/lib/active_record/relation/calculations.rb line 361 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Calculations

Type at least 2 characters to search.

↑↓ navigate · open · esc close