Method: ActiveRecord::QueryMethods#references

Defined in:
activerecord/lib/active_record/relation/query_methods.rb

#references(*table_names) ⇒ Object

Use to indicate that the given table_names are referenced by an SQL string, and should therefore be JOINed in any query rather than loaded separately. This method only works in conjuction with includes. See #includes for more details.

User.includes(:posts).where("posts.name = 'foo'")
# => Doesn't JOIN the posts table, resulting in an error.

User.includes(:posts).where("posts.name = 'foo'").references(:posts)
# => Query now knows the string references posts, so adds a JOIN


184
185
186
187
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 184

def references(*table_names)
  check_if_method_has_arguments!(:references, table_names)
  spawn.references!(*table_names)
end