aboutsummaryrefslogtreecommitdiffstats
path: root/guides/source/active_record_querying.md
diff options
context:
space:
mode:
authorariabov <spralex@gmail.com>2014-04-02 23:39:22 -0700
committerariabov <spralex@gmail.com>2014-04-02 23:39:22 -0700
commit34a3d425ea78786c63757028257b63b895e60960 (patch)
tree4d183cf634e15b4c65189330fa87e79e73ad82f3 /guides/source/active_record_querying.md
parent79f06a91345a301e1a2f2378552b5860a493b256 (diff)
downloadrails-34a3d425ea78786c63757028257b63b895e60960.tar.gz
rails-34a3d425ea78786c63757028257b63b895e60960.tar.bz2
rails-34a3d425ea78786c63757028257b63b895e60960.zip
In Active Record Querying guide, currently `Merging of scopes` section uses a concept of default scope in its example before it is introduced in the following section titled `Applying a default scope`.
It makes more sense to switch the ordering to introduce default scopes (`Applying a default scope`) first and then go into `Merging of scopes` section where it is used.
Diffstat (limited to 'guides/source/active_record_querying.md')
-rw-r--r--guides/source/active_record_querying.md59
1 files changed, 29 insertions, 30 deletions
diff --git a/guides/source/active_record_querying.md b/guides/source/active_record_querying.md
index 0a332d7dd9..2a76df156c 100644
--- a/guides/source/active_record_querying.md
+++ b/guides/source/active_record_querying.md
@@ -1231,6 +1231,35 @@ Using a class method is the preferred way to accept arguments for scopes. These
category.posts.created_before(time)
```
+### Applying a default scope
+
+If we wish for a scope to be applied across all queries to the model we can use the
+`default_scope` method within the model itself.
+
+```ruby
+class Client < ActiveRecord::Base
+ default_scope { where("removed_at IS NULL") }
+end
+```
+
+When queries are executed on this model, the SQL query will now look something like
+this:
+
+```sql
+SELECT * FROM clients WHERE removed_at IS NULL
+```
+
+If you need to do more complex things with a default scope, you can alternatively
+define it as a class method:
+
+```ruby
+class Client < ActiveRecord::Base
+ def self.default_scope
+ # Should return an ActiveRecord::Relation.
+ end
+end
+```
+
### Merging of scopes
Just like `where` clauses scopes are merged using `AND` conditions.
@@ -1284,36 +1313,6 @@ User.where(state: 'inactive')
As you can see above the `default_scope` is being merged in both
`scope` and `where` conditions.
-
-### Applying a default scope
-
-If we wish for a scope to be applied across all queries to the model we can use the
-`default_scope` method within the model itself.
-
-```ruby
-class Client < ActiveRecord::Base
- default_scope { where("removed_at IS NULL") }
-end
-```
-
-When queries are executed on this model, the SQL query will now look something like
-this:
-
-```sql
-SELECT * FROM clients WHERE removed_at IS NULL
-```
-
-If you need to do more complex things with a default scope, you can alternatively
-define it as a class method:
-
-```ruby
-class Client < ActiveRecord::Base
- def self.default_scope
- # Should return an ActiveRecord::Relation.
- end
-end
-```
-
### Removing All Scoping
If we wish to remove scoping for any reason we can use the `unscoped` method. This is