instance method
joins
Ruby on Rails 8.0.4
Since v3.0.20Signature
joins(*args)
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
Parameters
-
argsrest
Source
# 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
Defined in activerecord/lib/active_record/relation/query_methods.rb line 868
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::QueryMethods