instance method references_eager_loaded_tables?

Ruby on Rails 4.0.13

Since v3.0.20 Private — implementation detail, not part of the public API

Available in: v3.0.20 v3.1.12 v3.2.22.5 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

references_eager_loaded_tables?()

No documentation comment.

Source
# File activerecord/lib/active_record/relation.rb, line 606
    def references_eager_loaded_tables?
      joined_tables = arel.join_sources.map do |join|
        if join.is_a?(Arel::Nodes::StringJoin)
          tables_in_string(join.left)
        else
          [join.left.table_name, join.left.table_alias]
        end
      end

      joined_tables += [table.name, table.table_alias]

      # always convert table names to downcase as in Oracle quoted table names are in uppercase
      joined_tables = joined_tables.flatten.compact.map { |t| t.downcase }.uniq
      string_tables = tables_in_string(to_sql)

      if (references_values - joined_tables).any?
        true
      elsif !ActiveRecord::Base.disable_implicit_join_references &&
            (string_tables - joined_tables).any?
        ActiveSupport::Deprecation.warn(
          "It looks like you are eager loading table(s) (one of: #{string_tables.join(', ')}) " \
          "that are referenced in a string SQL snippet. For example: \n" \
          "\n" \
          "    Post.includes(:comments).where(\"comments.title = 'foo'\")\n" \
          "\n" \
          "Currently, Active Record recognizes the table in the string, and knows to JOIN the " \
          "comments table to the query, rather than loading comments in a separate query. " \
          "However, doing this without writing a full-blown SQL parser is inherently flawed. " \
          "Since we don't want to write an SQL parser, we are removing this functionality. " \
          "From now on, you must explicitly tell Active Record when you are referencing a table " \
          "from a string:\n" \
          "\n" \
          "    Post.includes(:comments).where(\"comments.title = 'foo'\").references(:comments)\n" \
          "\n" \
          "If you don't rely on implicit join references you can disable the feature entirely " \
          "by setting `config.active_record.disable_implicit_join_references = true`."
        )
        true
      else
        false
      end
    end

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

Defined in ActiveRecord::Relation

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close