wallaby 5.1.5 → 5.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/app/controllers/wallaby/abstract_resources_controller.rb +171 -187
- data/app/controllers/wallaby/application_controller.rb +15 -4
- data/app/controllers/wallaby/base_controller.rb +1 -3
- data/app/controllers/wallaby/secure_controller.rb +10 -6
- data/app/security/ability.rb +1 -0
- data/app/views/wallaby/resources/form/_float.html.erb +1 -1
- data/config/locales/wallaby.en.yml +5 -0
- data/lib/adaptors/wallaby/active_record.rb +1 -1
- data/lib/adaptors/wallaby/active_record/model_decorator.rb +17 -19
- data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder.rb +7 -0
- data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/association_builder.rb +11 -0
- data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb +10 -1
- data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/sti_builder.rb +14 -7
- data/lib/adaptors/wallaby/active_record/model_decorator/title_field_finder.rb +4 -0
- data/lib/adaptors/wallaby/active_record/model_finder.rb +4 -3
- data/lib/adaptors/wallaby/active_record/model_pagination_provider.rb +3 -6
- data/lib/adaptors/wallaby/active_record/model_service_provider.rb +12 -3
- data/lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb +16 -1
- data/lib/adaptors/wallaby/active_record/model_service_provider/permitter.rb +14 -2
- data/lib/adaptors/wallaby/active_record/model_service_provider/querier.rb +46 -1
- data/lib/adaptors/wallaby/active_record/model_service_provider/querier/transformer.rb +11 -5
- data/lib/adaptors/wallaby/active_record/model_service_provider/validator.rb +6 -0
- data/lib/concerns/wallaby/resources_helper_methods.rb +44 -0
- data/lib/decorators/wallaby/abstract_resource_decorator.rb +9 -4
- data/lib/errors/wallaby/model_not_found.rb +1 -0
- data/lib/errors/wallaby/resource_not_found.rb +1 -0
- data/lib/forms/wallaby/form_builder.rb +5 -3
- data/lib/helpers/wallaby/application_helper.rb +10 -1
- data/lib/helpers/wallaby/base_helper.rb +12 -4
- data/lib/helpers/wallaby/form_helper.rb +7 -4
- data/lib/helpers/wallaby/links_helper.rb +10 -7
- data/lib/helpers/wallaby/resources_helper.rb +2 -0
- data/lib/helpers/wallaby/secure_helper.rb +13 -7
- data/lib/helpers/wallaby/styling_helper.rb +1 -1
- data/lib/interfaces/wallaby/mode.rb +38 -16
- data/lib/interfaces/wallaby/model_decorator.rb +36 -27
- data/lib/interfaces/wallaby/model_decorator/field_helpers.rb +12 -2
- data/lib/interfaces/wallaby/model_finder.rb +1 -0
- data/lib/interfaces/wallaby/model_pagination_provider.rb +6 -5
- data/lib/interfaces/wallaby/model_service_provider.rb +10 -2
- data/lib/paginators/wallaby/abstract_resource_paginator.rb +6 -1
- data/lib/parsers/wallaby/parser.rb +1 -0
- data/lib/responders/wallaby/abstract_responder.rb +15 -2
- data/lib/routes/wallaby/resources_router.rb +4 -0
- data/lib/servicers/wallaby/abstract_model_servicer.rb +25 -1
- data/lib/servicers/wallaby/model_servicer.rb +1 -0
- data/lib/services/wallaby/link_options_normalizer.rb +13 -9
- data/lib/services/wallaby/lookup_context_wrapper.rb +11 -2
- data/lib/services/wallaby/map.rb +107 -69
- data/lib/services/wallaby/map/mode_mapper.rb +2 -0
- data/lib/services/wallaby/map/model_class_collector.rb +7 -0
- data/lib/services/wallaby/map/model_class_mapper.rb +15 -7
- data/lib/services/wallaby/partial_renderer.rb +7 -0
- data/lib/services/wallaby/prefixes_builder.rb +18 -0
- data/lib/services/wallaby/sorting/hash_builder.rb +7 -1
- data/lib/services/wallaby/sorting/link_builder.rb +6 -1
- data/lib/services/wallaby/sorting/next_builder.rb +23 -2
- data/lib/tree/wallaby/node.rb +2 -0
- data/lib/utils/wallaby/test_utils.rb +32 -0
- data/lib/utils/wallaby/utils.rb +51 -5
- data/lib/wallaby.rb +1 -0
- data/lib/wallaby/configuration.rb +9 -3
- data/lib/wallaby/configuration/features.rb +2 -1
- data/lib/wallaby/configuration/mapping.rb +66 -0
- data/lib/wallaby/configuration/metadata.rb +1 -0
- data/lib/wallaby/configuration/pagination.rb +2 -1
- data/lib/wallaby/engine.rb +4 -0
- data/lib/wallaby/version.rb +1 -1
- metadata +5 -3
- data/lib/tasks/wallaby_tasks.rake +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ad9fb3be960036fe7cb2726cd9fd30a9ee111aaa
|
|
4
|
+
data.tar.gz: f49cb2db9f22cfb9022624b30f0a718fabd2e93e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54a406b351d36c99269a644db761d88198379204832ab17aef026353d5b0f06d6ec0f3ca63290f23cb5fda5e1d68adca32ee9a63c146db5b1bfcef3d8ed28cf2
|
|
7
|
+
data.tar.gz: 0c5011125fc765c9a1d1a8b064cc1cf9665f220df1130232f6b8ee6cad3cbb928ecbedeff1ded060943a144421ec6aaf222d60b8b7ce12335f5c0703cddaaa39
|
data/Rakefile
CHANGED
|
@@ -14,7 +14,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
|
14
14
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
APP_RAKEFILE = File.expand_path('
|
|
17
|
+
APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
|
|
18
18
|
load 'rails/tasks/engine.rake'
|
|
19
19
|
load 'rails/tasks/statistics.rake'
|
|
20
20
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
module Wallaby
|
|
2
2
|
# Generic CRUD controller
|
|
3
3
|
class AbstractResourcesController < ::Wallaby::BaseController
|
|
4
|
+
include ResourcesHelperMethods
|
|
4
5
|
self.responder = ResourcesResponder
|
|
5
6
|
respond_to :html
|
|
6
7
|
respond_to :json
|
|
@@ -9,94 +10,118 @@ module Wallaby
|
|
|
9
10
|
helper_method :resource_id, :resource, :collection,
|
|
10
11
|
:current_model_decorator, :authorizer
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
class << self
|
|
14
|
+
# @return [String] resources name for controller
|
|
15
|
+
def resources_name
|
|
16
|
+
return unless self < configuration.mapping.resources_controller
|
|
17
|
+
Map.resources_name_map name.gsub('Controller', EMPTY_STRING)
|
|
18
|
+
end
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
# @return [Class] model class for controller
|
|
21
|
+
def model_class
|
|
22
|
+
return unless self < configuration.mapping.resources_controller
|
|
23
|
+
Map.model_class_map resources_name
|
|
24
|
+
end
|
|
22
25
|
end
|
|
23
26
|
|
|
24
|
-
#
|
|
27
|
+
# Home page
|
|
28
|
+
#
|
|
29
|
+
# You can completely override this action:
|
|
30
|
+
#
|
|
31
|
+
# def home
|
|
32
|
+
# # do something differently
|
|
33
|
+
# end
|
|
25
34
|
def home
|
|
26
35
|
# do nothing
|
|
27
36
|
end
|
|
28
37
|
|
|
29
|
-
#
|
|
38
|
+
# Resourceful action to list paginated records.
|
|
39
|
+
#
|
|
40
|
+
# You can override this method in subclasses in the following ways:
|
|
41
|
+
#
|
|
42
|
+
# - To perform action before `index` is run
|
|
43
|
+
#
|
|
44
|
+
# def index
|
|
45
|
+
# # do something beforehand
|
|
46
|
+
# super
|
|
47
|
+
# end
|
|
48
|
+
#
|
|
49
|
+
# - To perform action after `index`, but before rendering.
|
|
50
|
+
# The reason is that we use responder at the end of the action
|
|
51
|
+
#
|
|
52
|
+
# def index
|
|
53
|
+
# super do
|
|
54
|
+
# # do something afterwards
|
|
55
|
+
# end
|
|
56
|
+
# end
|
|
57
|
+
#
|
|
58
|
+
# - To perform completely different action
|
|
59
|
+
#
|
|
60
|
+
# def index
|
|
61
|
+
# # do something completely different
|
|
62
|
+
# end
|
|
30
63
|
def index
|
|
31
64
|
authorize! :index, current_model_class
|
|
32
65
|
yield if block_given? # after_index
|
|
33
66
|
respond_with collection
|
|
34
67
|
end
|
|
35
68
|
|
|
36
|
-
#
|
|
37
|
-
#
|
|
69
|
+
# Resourceful new action to show a form for creating a record.
|
|
70
|
+
#
|
|
71
|
+
# You can override this method in subclasses in the following ways:
|
|
72
|
+
#
|
|
38
73
|
# - To perform action before `new` is run
|
|
39
74
|
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
# end
|
|
45
|
-
# ```
|
|
75
|
+
# def new
|
|
76
|
+
# # do something beforehand
|
|
77
|
+
# super
|
|
78
|
+
# end
|
|
46
79
|
#
|
|
47
80
|
# - To perform action after `new`, but before rendering.
|
|
48
|
-
#
|
|
81
|
+
# The reason is that we use responder at the end of the action
|
|
49
82
|
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
# end
|
|
56
|
-
# ```
|
|
83
|
+
# def new
|
|
84
|
+
# super do
|
|
85
|
+
# # do something afterwards
|
|
86
|
+
# end
|
|
87
|
+
# end
|
|
57
88
|
#
|
|
58
89
|
# - To perform completely different action
|
|
59
90
|
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
# end
|
|
64
|
-
# ```
|
|
91
|
+
# def new
|
|
92
|
+
# # do something completely different
|
|
93
|
+
# end
|
|
65
94
|
def new
|
|
66
95
|
authorize! :new, resource
|
|
67
96
|
yield if block_given? # after_new
|
|
68
97
|
respond_with resource
|
|
69
98
|
end
|
|
70
99
|
|
|
71
|
-
#
|
|
72
|
-
#
|
|
100
|
+
# Resourceful create action to create a record.
|
|
101
|
+
#
|
|
102
|
+
# You can override this method in subclasses in the following ways:
|
|
103
|
+
#
|
|
73
104
|
# - To perform action before `new` is run
|
|
74
105
|
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
# end
|
|
80
|
-
# ```
|
|
106
|
+
# def create
|
|
107
|
+
# # do something beforehand
|
|
108
|
+
# super
|
|
109
|
+
# end
|
|
81
110
|
#
|
|
82
111
|
# - To perform action after `create`, but before rendering.
|
|
83
|
-
#
|
|
112
|
+
# The reason is that we use responder at the end of the action
|
|
84
113
|
#
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
# end
|
|
91
|
-
# ```
|
|
114
|
+
# def create
|
|
115
|
+
# super do
|
|
116
|
+
# # do something afterwards
|
|
117
|
+
# end
|
|
118
|
+
# end
|
|
92
119
|
#
|
|
93
120
|
# - To perform completely different action
|
|
94
121
|
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
-
# end
|
|
99
|
-
# ```
|
|
122
|
+
# def create
|
|
123
|
+
# # do something completely different
|
|
124
|
+
# end
|
|
100
125
|
def create
|
|
101
126
|
authorize! :create, resource
|
|
102
127
|
current_model_service.create resource, params
|
|
@@ -104,105 +129,93 @@ module Wallaby
|
|
|
104
129
|
respond_with resource, location: helpers.show_path(resource)
|
|
105
130
|
end
|
|
106
131
|
|
|
107
|
-
#
|
|
108
|
-
#
|
|
132
|
+
# Resourceful show action to display values for a record.
|
|
133
|
+
#
|
|
134
|
+
# You can override this method in subclasses in the following ways:
|
|
135
|
+
#
|
|
109
136
|
# - To perform action before `show` is run
|
|
110
137
|
#
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
#
|
|
115
|
-
# end
|
|
116
|
-
# ```
|
|
138
|
+
# def show
|
|
139
|
+
# # do something beforehand
|
|
140
|
+
# super
|
|
141
|
+
# end
|
|
117
142
|
#
|
|
118
143
|
# - To perform action after `show`, but before rendering.
|
|
119
|
-
#
|
|
144
|
+
# The reason is that we use responder at the end of the action
|
|
120
145
|
#
|
|
121
|
-
#
|
|
122
|
-
#
|
|
123
|
-
#
|
|
124
|
-
#
|
|
125
|
-
#
|
|
126
|
-
# end
|
|
127
|
-
# ```
|
|
146
|
+
# def show
|
|
147
|
+
# super do
|
|
148
|
+
# # do something afterwards
|
|
149
|
+
# end
|
|
150
|
+
# end
|
|
128
151
|
#
|
|
129
152
|
# - To perform completely different action
|
|
130
153
|
#
|
|
131
|
-
#
|
|
132
|
-
#
|
|
133
|
-
#
|
|
134
|
-
# end
|
|
135
|
-
# ```
|
|
154
|
+
# def show
|
|
155
|
+
# # do something completely different
|
|
156
|
+
# end
|
|
136
157
|
def show
|
|
137
158
|
authorize! :show, resource
|
|
138
159
|
yield if block_given? # after_show
|
|
139
160
|
respond_with resource
|
|
140
161
|
end
|
|
141
162
|
|
|
142
|
-
#
|
|
143
|
-
#
|
|
163
|
+
# Resourceful edit action to show a form for editing a record.
|
|
164
|
+
#
|
|
165
|
+
# You can override this method in subclasses in the following ways:
|
|
166
|
+
#
|
|
144
167
|
# - To perform action before `edit` is run
|
|
145
168
|
#
|
|
146
|
-
#
|
|
147
|
-
#
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
# end
|
|
151
|
-
# ```
|
|
169
|
+
# def edit
|
|
170
|
+
# # do something beforehand
|
|
171
|
+
# super
|
|
172
|
+
# end
|
|
152
173
|
#
|
|
153
174
|
# - To perform action after `edit`, but before rendering.
|
|
154
|
-
#
|
|
175
|
+
# The reason is that we use responder at the end of the action
|
|
155
176
|
#
|
|
156
|
-
#
|
|
157
|
-
#
|
|
158
|
-
#
|
|
159
|
-
#
|
|
160
|
-
#
|
|
161
|
-
# end
|
|
162
|
-
# ```
|
|
177
|
+
# def edit
|
|
178
|
+
# super do
|
|
179
|
+
# # do something afterwards
|
|
180
|
+
# end
|
|
181
|
+
# end
|
|
163
182
|
#
|
|
164
183
|
# - To perform completely different action
|
|
165
184
|
#
|
|
166
|
-
#
|
|
167
|
-
#
|
|
168
|
-
#
|
|
169
|
-
# end
|
|
170
|
-
# ```
|
|
185
|
+
# def edit
|
|
186
|
+
# # do something completely different
|
|
187
|
+
# end
|
|
171
188
|
def edit
|
|
172
189
|
authorize! :edit, resource
|
|
173
190
|
yield if block_given? # after_edit
|
|
174
191
|
respond_with resource
|
|
175
192
|
end
|
|
176
193
|
|
|
177
|
-
#
|
|
178
|
-
#
|
|
194
|
+
# Resourceful update action to update a record.
|
|
195
|
+
#
|
|
196
|
+
# You can override this method in subclasses in the following ways:
|
|
197
|
+
#
|
|
179
198
|
# - To perform action before `update` is run
|
|
180
199
|
#
|
|
181
|
-
#
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
# end
|
|
186
|
-
# ```
|
|
200
|
+
# def update
|
|
201
|
+
# # do something beforehand
|
|
202
|
+
# super
|
|
203
|
+
# end
|
|
187
204
|
#
|
|
188
205
|
# - To perform action after `update`, but before rendering.
|
|
189
|
-
#
|
|
206
|
+
# The reason is that we use responder at the end of the action
|
|
190
207
|
#
|
|
191
|
-
#
|
|
192
|
-
#
|
|
193
|
-
#
|
|
194
|
-
#
|
|
195
|
-
#
|
|
196
|
-
# end
|
|
197
|
-
# ```
|
|
208
|
+
# def update
|
|
209
|
+
# super do
|
|
210
|
+
# # do something afterwards
|
|
211
|
+
# end
|
|
212
|
+
# end
|
|
198
213
|
#
|
|
199
214
|
# - To perform completely different action
|
|
200
215
|
#
|
|
201
|
-
#
|
|
202
|
-
#
|
|
203
|
-
#
|
|
204
|
-
# end
|
|
205
|
-
# ```
|
|
216
|
+
# def update
|
|
217
|
+
# # do something completely different
|
|
218
|
+
# end
|
|
206
219
|
def update
|
|
207
220
|
authorize! :update, resource
|
|
208
221
|
current_model_service.update resource, params
|
|
@@ -210,35 +223,31 @@ module Wallaby
|
|
|
210
223
|
respond_with resource, location: helpers.show_path(resource)
|
|
211
224
|
end
|
|
212
225
|
|
|
213
|
-
#
|
|
214
|
-
#
|
|
226
|
+
# Resourceful destroy action to delete a record.
|
|
227
|
+
#
|
|
228
|
+
# You can override this method in subclasses in the following ways:
|
|
229
|
+
#
|
|
215
230
|
# - To perform action before `destroy` is run
|
|
216
231
|
#
|
|
217
|
-
#
|
|
218
|
-
#
|
|
219
|
-
#
|
|
220
|
-
#
|
|
221
|
-
# end
|
|
222
|
-
# ```
|
|
232
|
+
# def destroy
|
|
233
|
+
# # do something beforehand
|
|
234
|
+
# super
|
|
235
|
+
# end
|
|
223
236
|
#
|
|
224
237
|
# - To perform action after `destroy`, but before rendering.
|
|
225
|
-
#
|
|
238
|
+
# The reason is that we use responder at the end of the action
|
|
226
239
|
#
|
|
227
|
-
#
|
|
228
|
-
#
|
|
229
|
-
#
|
|
230
|
-
#
|
|
231
|
-
#
|
|
232
|
-
# end
|
|
233
|
-
# ```
|
|
240
|
+
# def destroy
|
|
241
|
+
# super do
|
|
242
|
+
# # do something afterwards
|
|
243
|
+
# end
|
|
244
|
+
# end
|
|
234
245
|
#
|
|
235
246
|
# - To perform completely different action
|
|
236
247
|
#
|
|
237
|
-
#
|
|
238
|
-
#
|
|
239
|
-
#
|
|
240
|
-
# end
|
|
241
|
-
# ```
|
|
248
|
+
# def destroy
|
|
249
|
+
# # do something completely different
|
|
250
|
+
# end
|
|
242
251
|
def destroy
|
|
243
252
|
authorize! :destroy, resource
|
|
244
253
|
current_model_service.destroy resource, params
|
|
@@ -246,6 +255,26 @@ module Wallaby
|
|
|
246
255
|
respond_with resource, location: helpers.index_path(current_model_class)
|
|
247
256
|
end
|
|
248
257
|
|
|
258
|
+
# Model servicer associated to current modal class.
|
|
259
|
+
#
|
|
260
|
+
# This model servicer will take care of all the CRUD operations
|
|
261
|
+
#
|
|
262
|
+
# For how to override model service, see (Wallaby::ModelServicer)
|
|
263
|
+
# @return [Wallaby::ModelServicer] a servicer
|
|
264
|
+
def current_model_service
|
|
265
|
+
@current_model_service ||= begin
|
|
266
|
+
model_class = current_model_class
|
|
267
|
+
Map.servicer_map(model_class).new model_class, authorizer
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
# To whitelist the params for CRUD actions
|
|
272
|
+
# @see Wallaby::ModelServicer#permit
|
|
273
|
+
# @return [ActionController::Parameters] whitelisted params
|
|
274
|
+
def resource_params
|
|
275
|
+
@resource_params ||= current_model_service.permit params
|
|
276
|
+
end
|
|
277
|
+
|
|
249
278
|
protected
|
|
250
279
|
|
|
251
280
|
# Override origin ActionView::ViewPaths::ClassMethods#_prefixes
|
|
@@ -261,6 +290,7 @@ module Wallaby
|
|
|
261
290
|
# (e.g. `wallaby/resources/index)
|
|
262
291
|
# - wallaby_resources_controller_name
|
|
263
292
|
# (e.g. `wallaby/resources)
|
|
293
|
+
# @return [PrefixesBuilder]
|
|
264
294
|
def _prefixes
|
|
265
295
|
@_prefixes ||= PrefixesBuilder.new(
|
|
266
296
|
super, controller_path, current_resources_name, params
|
|
@@ -269,66 +299,20 @@ module Wallaby
|
|
|
269
299
|
|
|
270
300
|
# A wrapped lookup content
|
|
271
301
|
# Its aim is to render string partial when given partial is not found
|
|
302
|
+
# @return [LookupContextWrapper]
|
|
272
303
|
def lookup_context
|
|
273
|
-
@_lookup_context ||= LookupContextWrapper.new super
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
# Current model service to take care of all the CRUD actions
|
|
277
|
-
# For how to override model service, see (Wallaby::ModelServicer)
|
|
278
|
-
def current_model_service
|
|
279
|
-
@current_model_service ||= begin
|
|
280
|
-
model_class = current_model_class
|
|
281
|
-
Map.servicer_map(model_class).new model_class, authorizer
|
|
282
|
-
end
|
|
304
|
+
@_lookup_context ||= LookupContextWrapper.new super # rubocop:disable Naming/MemoizedInstanceVariableName, Metrics/LineLength
|
|
283
305
|
end
|
|
284
306
|
|
|
285
307
|
# To paginate the collection but only when either `page` or `per` param is
|
|
286
308
|
# given, or requesting HTML response
|
|
287
309
|
# @see Wallaby::ModelServicer#paginate
|
|
310
|
+
# @param query [#each]
|
|
311
|
+
# @return [#each]
|
|
288
312
|
def paginate(query)
|
|
289
313
|
paginatable =
|
|
290
314
|
params[:page] || params[:per] || request.format.symbol == :html
|
|
291
315
|
paginatable ? current_model_service.paginate(query, params) : query
|
|
292
316
|
end
|
|
293
|
-
|
|
294
|
-
# To whitelist the params for CRUD actions
|
|
295
|
-
# @see Wallaby::ModelServicer#permit
|
|
296
|
-
def resource_params
|
|
297
|
-
@resource_params ||= current_model_service.permit params
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
# Shorthand of params[:id]
|
|
301
|
-
def resource_id
|
|
302
|
-
params[:id]
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
# @return [#each] a collection of all the records
|
|
306
|
-
def collection
|
|
307
|
-
@collection ||= paginate current_model_service.collection params
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
# @return either persisted or unpersisted resource instance
|
|
311
|
-
def resource
|
|
312
|
-
@resource ||= begin
|
|
313
|
-
whitelisted = action_name.in?(SAVE_ACTIONS) ? resource_params : {}
|
|
314
|
-
if resource_id.present?
|
|
315
|
-
current_model_service.find resource_id, whitelisted
|
|
316
|
-
else
|
|
317
|
-
current_model_service.new whitelisted
|
|
318
|
-
end
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
# Get current model decorator so that we could retrieve metadata for given
|
|
323
|
-
# model class.
|
|
324
|
-
def current_model_decorator
|
|
325
|
-
@current_model_decorator ||= helpers.model_decorator current_model_class
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
# A wrapper method for authorizer
|
|
329
|
-
# @todo to add support to pundit in the future
|
|
330
|
-
def authorizer
|
|
331
|
-
current_ability
|
|
332
|
-
end
|
|
333
317
|
end
|
|
334
318
|
end
|