aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/scoping/named.rb
Commit message (Collapse)AuthorAgeFilesLines
...
* Provide a call stack for deprecation warnings where needed.Nikita Afanasenko2012-10-291-1/+2
| | | | It's sometimes hard to quickly find where deprecated call was performed, especially in case of migrating between Rails versions. So this is an attempt to improve the call stack part of the warning message by providing caller explicitly.
* update AR::Scoping documentation [ci skip]Francesco Rodriguez2012-09-211-65/+48
|
* load active_support/deprecation in active_support/railsXavier Noria2012-08-021-1/+0
|
* load active_support/core_ext/class/attribute in active_support/railsXavier Noria2012-08-021-1/+0
|
* load active_support/core_ext/object/blank in active_support/railsXavier Noria2012-08-021-1/+0
|
* Deprecate ActiveRecord::Base.scoped.Jon Leighton2012-07-271-5/+1
| | | | | | | It doesn't serve much purpose now that ActiveRecord::Base.all returns a Relation. The code is moved to active_record_deprecated_finders.
* ActiveRecord::Base.all returns a Relation.Jon Leighton2012-07-271-11/+8
| | | | | | | | | | | Previously it returned an Array. If you want an array, call e.g. `Post.to_a` rather than `Post.all`. This is more explicit. In most cases this should not break existing code, since Relations use method_missing to delegate unknown methods to #to_a anyway.
* extract deprecated codeJon Leighton2012-04-251-4/+2
|
* Extract deprecated codeJon Leighton2012-04-251-9/+8
|
* Removes caching from ActiveRecord::Core::ClassMethods#relationBenedikt Deicke2012-04-031-2/+2
| | | | | | | | | | | The #relation method gets called in four places and the return value was instantly cloned in three of them. The only place that did not clone was ActiveRecord::Scoping::Default::ClassMethods#unscoped. This introduced a bug described in #5667 and should really clone the relation, too. This means all four places would clone the relation, so it doesn't make a lot of sense caching it in the first place. The four places with calls to relations are: activerecord/lib/active_record/scoping/default.rb:110:in `block in build_default_scope'" activerecord/lib/active_record/scoping/default.rb:42:in `unscoped'" activerecord/lib/active_record/scoping/named.rb:38:in `scoped'" activerecord/lib/active_record/scoping/named.rb:52:in `scope_attributes'"
* Deprecate eager-evaluated scopes.Jon Leighton2012-03-211-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't use this: scope :red, where(color: 'red') default_scope where(color: 'red') Use this: scope :red, -> { where(color: 'red') } default_scope { where(color: 'red') } The former has numerous issues. It is a common newbie gotcha to do the following: scope :recent, where(published_at: Time.now - 2.weeks) Or a more subtle variant: scope :recent, -> { where(published_at: Time.now - 2.weeks) } scope :recent_red, recent.where(color: 'red') Eager scopes are also very complex to implement within Active Record, and there are still bugs. For example, the following does not do what you expect: scope :remove_conditions, except(:where) where(...).remove_conditions # => still has conditions
* Avoid obscure &Proc.new thingJon Leighton2012-03-211-2/+2
|
* Remove valid_scope_name? check - use rubyJon Leighton2012-03-211-11/+1
| | | | | | | scope is syntactic sugar for defining a class method. Ruby allows redefining methods but emits a warning when run with -w. So let's not implement our own logic for this. Users should run with -w if they want to be warned about redefined methods.
* no need for castJon Leighton2012-03-211-1/+0
|
* no need for lvarJon Leighton2012-03-211-3/+1
|
* app code in general wants Time.current, not Time.nowXavier Noria2011-12-281-3/+3
|
* call scope within unscoped to prevent duplication of where valuesSergey Nartimov2011-12-171-1/+1
|
* Move DefaultScope and NamedScope under ScopingJon Leighton2011-12-151-0/+202