Using `current_user` in a controller results in a "users" query that includes an unnecessary ORDER BY
The method current_user
from devise will end up running a query like the following:
SELECT "users".*
FROM "users"
WHERE "users"."id" = 1
ORDER BY "users"."id" DESC
LIMIT 1;
Here the ORDER BY is redundant (and technically the LIMIT too since there can only be 1 row with a given ID).
This particular query appears to be the result of what devise does to get the current user. At some point it ends up in orm_adapter-0.5.0/lib/orm_adapter/adapters/active_record.rb
line 16:
# @see OrmAdapter::Base#get
def get(id)
klass.where(klass.primary_key => wrap_key(id)).first
end
In Rails first
will add a ORDER BY
and a LIMIT
, resulting in the above SQL query.
The impact of this is relatively minor, but if possible we should get rid of the ORDER BY since it's not necessary.