internuity-quick_scopes 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +19 -0
- data/README.rdoc +12 -1
- data/Rakefile +1 -1
- data/lib/quick_scopes.rb +4 -0
- data/test/test_quick_scopes.rb +23 -0
- metadata +1 -1
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2009 Internuity Ltd, Andrew Timberlake <andrew@andrewtimberlake.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.rdoc
CHANGED
@@ -6,7 +6,9 @@ These are especially useful for quick modifications to a query on an association
|
|
6
6
|
The named scopes added are:
|
7
7
|
* <tt>order</tt>
|
8
8
|
* <tt>limit</tt>
|
9
|
-
* <tt>
|
9
|
+
* <tt>offset</tt>
|
10
|
+
* <tt>with</tt> - alias for :include
|
11
|
+
* <tt>where</tt> - alias for :conditions
|
10
12
|
|
11
13
|
==Examples
|
12
14
|
With a User model having many Posts
|
@@ -18,8 +20,17 @@ With a User model having many Posts
|
|
18
20
|
|
19
21
|
# Limit the results to a specific number
|
20
22
|
user.posts.limit(5)
|
23
|
+
|
24
|
+
# Offset the results
|
25
|
+
user.posts.offset(5)
|
21
26
|
|
22
27
|
# Include other associated models
|
23
28
|
user.posts.with(:comments)
|
24
29
|
user.posts.with(:comments, :author)
|
25
30
|
user.posts.with({:comments => :author}, :author)
|
31
|
+
|
32
|
+
# Limit your results with conditions
|
33
|
+
user.posts.where(:published => true)
|
34
|
+
|
35
|
+
==Note
|
36
|
+
Some of these don't promote best practices for your code but can be very useful when working with the console.
|
data/Rakefile
CHANGED
data/lib/quick_scopes.rb
CHANGED
data/test/test_quick_scopes.rb
CHANGED
@@ -17,6 +17,14 @@ class QuickScopesTest < Test::Unit::TestCase
|
|
17
17
|
should "have a with scope" do
|
18
18
|
assert Post.scopes.include?(:with)
|
19
19
|
end
|
20
|
+
|
21
|
+
should "have a where scope" do
|
22
|
+
assert Post.scopes.include?(:where)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "have a offset scope" do
|
26
|
+
assert Post.scopes.include?(:offset)
|
27
|
+
end
|
20
28
|
end
|
21
29
|
end
|
22
30
|
|
@@ -46,6 +54,21 @@ class QuickScopesTest < Test::Unit::TestCase
|
|
46
54
|
end
|
47
55
|
end
|
48
56
|
|
57
|
+
context "using the offset named_scope" do
|
58
|
+
setup {
|
59
|
+
@post = Post.first
|
60
|
+
}
|
61
|
+
|
62
|
+
should "return 2 comments when offset by 1" do
|
63
|
+
assert_equal 2, @post.comments.limit(3).offset(1).to_a.size
|
64
|
+
end
|
65
|
+
|
66
|
+
should "return 1 comments when offset by 2" do
|
67
|
+
#Not sure why I have to add to_a?
|
68
|
+
assert_equal 1, @post.comments.limit(3).offset(2).to_a.size
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
49
72
|
context "using the where named_scope" do
|
50
73
|
setup {
|
51
74
|
@post = Post.first
|