Method: ActiveRecord::QueryMethods#includes
- Defined in:
- lib/active_record/relation/query_methods.rb
#includes(*args) ⇒ Object
Specify relationships to be included in the result set. For example:
users = User.includes(:address)
users.each do |user|
user.address.city
end
allows you to access the address attribute of the User model without firing an additional query. This will often result in a performance improvement over a simple join.
You can also specify multiple relationships, like this:
users = User.includes(:address, :friends)
Loading nested relationships is possible using a Hash:
users = User.includes(:address, friends: [:address, :followers])
conditions
If you want to add conditions to your included models you’ll have to explicitly reference them. For example:
User.includes(:posts).where('posts.name = ?', 'example')
Will throw an error, but this will work:
User.includes(:posts).where('posts.name = ?', 'example').references(:posts)
Note that includes works with association names while references needs the actual table name.
128 129 130 131 |
# File 'lib/active_record/relation/query_methods.rb', line 128 def includes(*args) check_if_method_has_arguments!(:includes, args) spawn.includes!(*args) end |