Hi everyone,
I am happy to announce that Rails 4.0.1 has been released. This is a bug fix release and includes more than 460 commits.
This release comes up with an important change on how Active Record handles subsequent order
calls.
In Rails 4.0.0 when you do something like this:
User.order("name asc").order("created_at desc")
The latter called order
will be prepended in the ORDER BY clause resulting on this SQL:
SELECT * FROM users ORDER BY created_at desc, name asc
In Rails 4.0.1 the behavior of Rails 3 has been restored and the generated ORDER BY clause looks like this:
SELECT * FROM users ORDER BY name asc, created_at desc
We chose to revert the behavior because it added a major backward incompatibility that made harder to have an upgrade path without major changes in the application code. Also we consider the older behavior a bug since it behaves differently from all the others scope methods when they are chained. So we took the most conservative path of reverting it to be consistent with the idea of having a smoother upgrade path to Rails 4.
For those who want the old behavior you can use .reorder
or .unscope
to remove the ORDER BY clause and generate another one.
Also, this release adds some performance improvements to make Rails 4 even faster.
To view the changes for each gem, please read the changelogs on GitHub:
Full listing
To see the full list of changes, check out all the commits on GitHub.
If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-1 hashes:
I’d like to thank you all, every contributor who helped with this release.