Making ActiveRecord::Base sort by id

Hello,

I’m trying to mix in a module so that AR::Base will sort all record by
ID
by default.

I’ve worked up a repo with a few methods of doing things similar to
this,
but I can’t get this working as I want (I started with the rails project
from

)

There are three non-master branches on that project:

https://github.com/rubyrailhead/ar-default-orderby/compare/ar-concern-order-by

  • is close but doesn’t work. This is close to what I want to get
    working. Can anyone help me get this branch working?

https://github.com/rubyrailhead/ar-default-orderby/compare/intermediate-subclass-order-by
- works but introduces an intermediate subclass

https://github.com/rubyrailhead/ar-default-orderby/compare/subclass-order-by

- puts the 'order by' directly in the mode. Works but requires 

change
to each subclass.

Again, can anyone help me to make the changes to get the branch at

https://github.com/rubyrailhead/ar-default-orderby/compare/intermediate-subclass-order-by
Working?

Thanks very much in advance,
Ruby

On 10 June 2015 at 19:56, Ruby R. [email protected] wrote:

Hello,

I’m trying to mix in a module so that AR::Base will sort all record by ID by
default.

Can I ask why you would want to do that? You don’t have to give a
reason of course, just interested.

Colin

I would not recommend using a default scope on an ActiveRecord model for
sorting.

Start your Rails console and try Model.find(1). This will result into:
SELECT models.* FROM models WHERE models.id=1 ORDER BY id DESC LIMIT 1

This ORDER BY will be included in every unneccessary query. The above
query
will be slower in MySQL than without the ORDER BY clause. Try it
yourself!

Create a normal scope and include it with every query where you expect
more
than 1 record as a result.

In case you consider a mixin try