instance method
order
Ruby on Rails 7.1.6
Since v3.0.20Signature
order(*args)
Applies an ORDER BY clause to a query.
#order accepts arguments in one of several formats.
symbols
The symbol represents the name of the column you want to order the results by.
User.order(:name) # SELECT "users".* FROM "users" ORDER BY "users"."name" ASC
By default, the order is ascending. If you want descending order, you can map the column name symbol to :desc.
User.order(email: :desc) # SELECT "users".* FROM "users" ORDER BY "users"."email" DESC
Multiple columns can be passed this way, and they will be applied in the order specified.
User.order(:name, email: :desc) # SELECT "users".* FROM "users" ORDER BY "users"."name" ASC, "users"."email" DESC
strings
Strings are passed directly to the database, allowing you to specify simple SQL expressions.
This could be a source of SQL injection, so only strings composed of plain column names and simple function(column_name) expressions with optional ASC/DESC modifiers are allowed.
User.order('name') # SELECT "users".* FROM "users" ORDER BY name User.order('name DESC') # SELECT "users".* FROM "users" ORDER BY name DESC User.order('name DESC, email') # SELECT "users".* FROM "users" ORDER BY name DESC, email
Arel
If you need to pass in complicated expressions that you have verified are safe for the database, you can use Arel.
User.order(Arel.sql('end_date - start_date')) # SELECT "users".* FROM "users" ORDER BY end_date - start_date
Custom query syntax, like JSON columns for PostgreSQL, is supported in this way.
User.order(Arel.sql("payload->>'kind'")) # SELECT "users".* FROM "users" ORDER BY payload->>'kind'
Parameters
-
argsrest
Source
# File activerecord/lib/active_record/relation/query_methods.rb, line 595
def order(*args)
check_if_method_has_arguments!(__callee__, args) do
sanitize_order_arguments(args)
end
spawn.order!(*args)
end
Defined in activerecord/lib/active_record/relation/query_methods.rb line 595
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::QueryMethods