diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-04-18 23:15:38 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-04-18 23:15:38 +0100 |
commit | 6f84c73dc48538202766cff3d973a53d3c30848e (patch) | |
tree | b95728dfe8813ad3637fbe3a1e52c9207279663d /activerecord/CHANGELOG | |
parent | 0acc6bd6cb1d27fdbb0c00ac3a322bc8413e03cc (diff) | |
download | rails-6f84c73dc48538202766cff3d973a53d3c30848e.tar.gz rails-6f84c73dc48538202766cff3d973a53d3c30848e.tar.bz2 rails-6f84c73dc48538202766cff3d973a53d3c30848e.zip |
Un-deprecate using 'default_scope' as a macro, but if you are calling the macro multiple times that will give deprecation warnings, and in 3.2 we will simply overwrite the default scope when you call the macro multiple times.
Diffstat (limited to 'activerecord/CHANGELOG')
-rw-r--r-- | activerecord/CHANGELOG | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 6b3d408720..4ae82a6419 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -11,25 +11,34 @@ [Jon Leighton] -* Deprecated support for passing hashes and relations to 'default_scope'. Please create a class - method for your scope instead. For example, change this: +* Calling 'default_scope' multiple times in a class (including when a superclass calls + 'default_scope') is deprecated. The current behavior is that this will merge the default + scopes together: - class Post < ActiveRecord::Base + class Post < ActiveRecord::Base # Rails 3.1 + default_scope where(:published => true) + default_scope where(:hidden => false) + # The default scope is now: where(:published => true, :hidden => false) + end + + In Rails 3.2, the behavior will be changed to overwrite previous scopes: + + class Post < ActiveRecord::Base # Rails 3.2 default_scope where(:published => true) + default_scope where(:hidden => false) + # The default scope is now: where(:hidden => false) end - To this: + If you wish to merge default scopes in special ways, it is recommended to define your default + scope as a class method and use the standard techniques for sharing code (inheritance, mixins, + etc.): class Post < ActiveRecord::Base def self.default_scope - where(:published => true) + where(:published => true).where(:hidden => false) end end - Rationale: It will make the implementation simpler because we can simply use inheritance to - handle inheritance scenarios, rather than trying to make up our own rules about what should - happen when you call default_scope multiple times or in subclasses. - [Jon Leighton] * PostgreSQL adapter only supports PostgreSQL version 8.2 and higher. |