Method: ActiveRecord::QueryMethods#joins
- Defined in:
- activerecord/lib/active_record/relation/query_methods.rb
#joins(*args) ⇒ Object
Performs JOINs on args. The given symbol(s) should match the name of the association(s).
User.joins(:posts)
# SELECT "users".*
# FROM "users"
# INNER JOIN "posts" ON "posts"."user_id" = "users"."id"
Multiple joins:
User.joins(:posts, :account)
# SELECT "users".*
# FROM "users"
# INNER JOIN "posts" ON "posts"."user_id" = "users"."id"
# INNER JOIN "accounts" ON "accounts"."id" = "users"."account_id"
Nested joins:
User.joins(posts: [:comments])
# SELECT "users".*
# FROM "users"
# INNER JOIN "posts" ON "posts"."user_id" = "users"."id"
# INNER JOIN "comments" ON "comments"."post_id" = "posts"."id"
You can use strings in order to customize your joins:
User.joins("LEFT JOIN bookmarks ON bookmarks.bookmarkable_type = 'Post' AND bookmarks.user_id = users.id")
# SELECT "users".* FROM "users" LEFT JOIN bookmarks ON bookmarks.bookmarkable_type = 'Post' AND bookmarks.user_id = users.id
868 869 870 871 |
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 868 def joins(*args) check_if_method_has_arguments!(__callee__, args) spawn.joins!(*args) end |