scoped_from 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 482df1de6489956c47825b4fbd71aba7d503181d
4
- data.tar.gz: 4b3270b8efce564533f32dc13ba9ca2c02052459
3
+ metadata.gz: 4b56a3a6c6ec63c95e922a48d886843747725f4a
4
+ data.tar.gz: 44a3f95dcb98a946af1b6f20f0319f23fd372595
5
5
  SHA512:
6
- metadata.gz: 4fe4a20776a1eaf41754dea44011fb2269082bb4c44707919e7a5b3bd7a1fb3a9ba544fe71d0af11036dd7c510681414638ddaef667fb2960ac7a571aef46d72
7
- data.tar.gz: da4e358a921c96fabc986c52323c58e4f1515d420d4029bba8fbbf59e28ebbb224918ddc28c2d4d6acd87b8a055b891f8468903989f467b2d21a475a71227a91
6
+ metadata.gz: 3d1153e12c34cac02f2e43e2e73245602c9b06395e8077b50662edbc1fdfcabfd2d17c29cfa37a687cb6565fa74dac3fea9755e77d13e284a1078fc130e7eded
7
+ data.tar.gz: 8e349b84d70e4b3ab0f492d0689392b366290e85276e882a0e5d52b927a2ad1f622e3ca463aab0cc9fb0a9dc40259153123cbe6ea2c3c10b8e1689204e03a4c4
data/.gitignore CHANGED
@@ -1,6 +1,6 @@
1
1
  .DS_Store
2
- .bundle
3
- .ruby-version
4
- Gemfile.lock
5
- pkg/*
6
- spec/test.sqlite3
2
+ /.bundle/
3
+ /.ruby-version
4
+ /Gemfile.lock
5
+ /pkg/
6
+ /spec/test.sqlite3
data/README.mdown CHANGED
@@ -7,7 +7,9 @@ Provides a simple mapping between scopes and controller parameters for
7
7
 
8
8
  Just add this into your `Gemfile`:
9
9
 
10
- gem 'scoped_from'
10
+ ```ruby
11
+ gem 'scoped_from'
12
+ ```
11
13
 
12
14
  Then, just run `bundle install`.
13
15
 
@@ -15,39 +17,45 @@ Then, just run `bundle install`.
15
17
 
16
18
  First, a model with some scopes:
17
19
 
18
- class Post < ActiveRecord::Base
20
+ ```ruby
21
+ class Post < ActiveRecord::Base
19
22
 
20
- scope :commented, where('comments_count > 0')
23
+ scope :commented, where('comments_count > 0')
21
24
 
22
- scope :created_between, lambda { |after, before|
23
- where('created_at >= ? AND created_at <= ?', after, before)
24
- }
25
+ scope :created_between, lambda { |after, before|
26
+ where('created_at >= ? AND created_at <= ?', after, before)
27
+ }
25
28
 
26
- scope :search, lambda { |pattern|
27
- where('body LIKE ?', "%#{pattern}%")
28
- }
29
+ scope :search, lambda { |pattern|
30
+ where('body LIKE ?', "%#{pattern}%")
31
+ }
29
32
 
30
- scope :with_category, lambda { |category_id|
31
- where(:category_id, category_id)
32
- }
33
+ scope :with_category, lambda { |category_id|
34
+ where(:category_id, category_id)
35
+ }
33
36
 
34
- end
37
+ end
38
+ ```
35
39
 
36
40
  After, a controller:
37
41
 
38
- class PostsController < ActionController::Base
42
+ ```ruby
43
+ class PostsController < ActionController::Base
39
44
 
40
- def index
41
- @posts = Post.scoped_from(params)
42
- end
45
+ def index
46
+ @posts = Post.scoped_from(params)
47
+ end
43
48
 
44
- end
49
+ end
50
+ ```
45
51
 
46
52
  Then, it just filter your model from params:
47
53
 
48
- /posts?commented=1
49
- /posts?search=rails
50
- /posts?search=rails&commented=1&with_category=42
54
+ ```
55
+ /posts?commented=1
56
+ /posts?search=rails
57
+ /posts?search=rails&commented=1&with_category=42
58
+ ```
51
59
 
52
60
  ## Accepted scopes
53
61
 
@@ -64,21 +72,29 @@ Columns are also automatically scoped.
64
72
 
65
73
  You can restrict mapping to some scopes with `:only` option:
66
74
 
67
- @posts = Post.scoped_from(params, only: ['commented', 'search'])
75
+ ```ruby
76
+ @posts = Post.scoped_from(params, only: ['commented', 'search'])
77
+ ```
68
78
 
69
79
  You can also exclude some scopes from mapping with `:except` option:
70
80
 
71
- @posts = Post.scoped_from(params, except: 'commented')
81
+ ```ruby
82
+ @posts = Post.scoped_from(params, except: 'commented')
83
+ ```
72
84
 
73
85
  ## Mapping order
74
86
 
75
87
  If you need to map an SQL order, just pass `order` parameter:
76
88
 
77
- @posts = Post.scoped_from(order: 'created_at')
89
+ ```ruby
90
+ @posts = Post.scoped_from(order: 'created_at')
91
+ ```
78
92
 
79
93
  Order direction can be specified using a dot, space or `:` as delimiter:
80
94
 
81
- @posts = Post.scoped_from(order: 'created_at.desc')
95
+ ```ruby
96
+ @posts = Post.scoped_from(order: 'created_at.desc')
97
+ ```
82
98
 
83
99
  Note that order is SQL safe with `scoped_from` method (columns names are
84
100
  checked).
@@ -88,26 +104,36 @@ checked).
88
104
  If your provide an array as parameter value, scope is invoked with each item
89
105
  of the array:
90
106
 
91
- @posts = Post.scoped_from(search: ['bar', 'foo'])
107
+ ```ruby
108
+ @posts = Post.scoped_from(search: ['bar', 'foo'])
109
+ ```
92
110
 
93
111
  is equivalent to
94
112
 
95
- @posts = Post.search('bar').search('foo')
113
+ ```ruby
114
+ @posts = Post.search('bar').search('foo')
115
+ ```
96
116
 
97
117
  You may also not want to filter on columns, just specify `:exclude_columns`
98
118
  option:
99
119
 
100
- @posts = Post.scoped_from(params, exclude_columns: true)
120
+ ```ruby
121
+ @posts = Post.scoped_from(params, exclude_columns: true)
122
+ ```
101
123
 
102
124
  A query string can also be given to `scoped_from` method:
103
125
 
104
- @posts = Post.scoped_from('with_category=24&search[]=foo&search[]=bar')
126
+ ```ruby
127
+ @posts = Post.scoped_from('with_category=24&search[]=foo&search[]=bar')
128
+ ```
105
129
 
106
130
  Returned scope from `scoped_from` method gives access to an internal query
107
131
  object:
108
132
 
109
- @posts = Post.scoped_from(params)
110
- @query = @posts.query
133
+ ```ruby
134
+ @posts = Post.scoped_from(params)
135
+ @query = @posts.query
136
+ ```
111
137
 
112
138
  This query provides you some convenience methods like `params`, `order_column`
113
139
  and `order_direction`. This object can also be used to save user's search into
@@ -117,23 +143,27 @@ But, you may also have to subclass this query class. You have to create a
117
143
  subclass of `ScopedFrom::Query` named `#{RecordClassName}Query`. Here is an
118
144
  example:
119
145
 
120
- class PostQuery < ScopedFrom::Query
146
+ ```ruby
147
+ class PostQuery < ScopedFrom::Query
121
148
 
122
- def category
123
- Category.find_by_id(params[:with_category]) if params[:with_category]
124
- end
149
+ def category
150
+ Category.find_by_id(params[:with_category]) if params[:with_category]
151
+ end
125
152
 
126
- end
153
+ end
154
+ ```
127
155
 
128
156
  This class has to be in load path.
129
157
 
130
158
  Then into a view:
131
159
 
132
- <% if @query.category %>
133
- <p>All posts of category <%= @query.category.name %></p>
134
- <% else %>
135
- <p>All posts</p>
136
- <% end %>
160
+ ```erb
161
+ <% if @query.category %>
162
+ <p>All posts of category <%= @query.category.name %></p>
163
+ <% else %>
164
+ <p>All posts</p>
165
+ <% end %>
166
+ ```
137
167
 
138
168
  ## Executing test suite
139
169
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.0
1
+ 1.0.0
@@ -9,7 +9,7 @@ module ScopedFrom
9
9
  base.scope_arities = ActiveSupport::HashWithIndifferentAccess.new
10
10
  end
11
11
 
12
- module ClassMethods
12
+ class_methods do
13
13
 
14
14
  def scope(name, scope_options, &block)
15
15
  super
data/scoped_from.gemspec CHANGED
@@ -16,11 +16,11 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ['lib']
18
18
 
19
- s.add_dependency 'activerecord', '>= 4.1.0', '< 4.3.0'
20
- s.add_dependency 'activesupport', '>= 4.1.0', '< 4.3.0'
19
+ s.add_dependency 'activerecord', '>= 5.0.0', '< 5.1.0'
20
+ s.add_dependency 'activesupport', '>= 5.0.0', '< 5.1.0'
21
21
 
22
- s.add_development_dependency 'byebug', '>= 3.2.0', '< 3.6.0'
23
- s.add_development_dependency 'rake', '>= 10.3.0', '< 10.5.0'
24
- s.add_development_dependency 'rspec', '>= 3.1.0', '< 3.2.0'
22
+ s.add_development_dependency 'byebug', '>= 3.2.0', '< 10.0.0'
23
+ s.add_development_dependency 'rake', '>= 10.3.0', '< 12.0.0'
24
+ s.add_development_dependency 'rspec', '>= 3.1.0', '< 3.6.0'
25
25
  s.add_development_dependency 'sqlite3-ruby', '>= 1.3.0', '< 1.4.0'
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scoped_from
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-28 00:00:00.000000000 Z
11
+ date: 2016-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.0
19
+ version: 5.0.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 4.3.0
22
+ version: 5.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 4.1.0
29
+ version: 5.0.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 4.3.0
32
+ version: 5.1.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 4.1.0
39
+ version: 5.0.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: 4.3.0
42
+ version: 5.1.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 4.1.0
49
+ version: 5.0.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: 4.3.0
52
+ version: 5.1.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: byebug
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 3.2.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 3.6.0
62
+ version: 10.0.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: 3.2.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 3.6.0
72
+ version: 10.0.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rake
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +79,7 @@ dependencies:
79
79
  version: 10.3.0
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: 10.5.0
82
+ version: 12.0.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: 10.3.0
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: 10.5.0
92
+ version: 12.0.0
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rspec
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: 3.1.0
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: 3.2.0
102
+ version: 3.6.0
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 3.1.0
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: 3.2.0
112
+ version: 3.6.0
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: sqlite3-ruby
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  requirements: []
183
183
  rubyforge_project: scoped_from
184
- rubygems_version: 2.2.2
184
+ rubygems_version: 2.5.1
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: Mapping between scopes and parameters for Rails