inherited_resources 1.2.2 → 1.3.0
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.
- data/CHANGELOG +7 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +74 -56
- data/README.rdoc +10 -11
- data/{lib → app/controllers}/inherited_resources/base.rb +4 -6
- data/lib/inherited_resources.rb +4 -2
- data/lib/inherited_resources/base_helpers.rb +15 -3
- data/lib/inherited_resources/class_methods.rb +19 -3
- data/lib/inherited_resources/polymorphic_helpers.rb +7 -7
- data/lib/inherited_resources/shallow_helpers.rb +22 -66
- data/lib/inherited_resources/version.rb +1 -1
- data/test/aliases_test.rb +10 -1
- data/test/base_test.rb +34 -1
- data/test/customized_base_test.rb +1 -1
- data/test/multiple_nested_optional_belongs_to_test.rb +369 -0
- data/test/test_helper.rb +5 -1
- data/test/url_helpers_test.rb +49 -46
- data/test/views/projects/edit.html.erb +1 -0
- data/test/views/projects/new.html.erb +1 -0
- data/test/views/projects/show.html.erb +1 -0
- metadata +14 -6
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# Version 1.3.0
|
2
|
+
|
3
|
+
* Added support for multiple polymorphic optional nesting
|
4
|
+
* Fix nested namespace in mountable apps
|
5
|
+
* Added support for rails 3.1 new mass assignment conventions
|
6
|
+
* Turn InheritedResources::Base into a reloadable constant to fix reloading issues
|
7
|
+
|
1
8
|
# Version 1.2.2
|
2
9
|
|
3
10
|
* Fix a bug in params parsing
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,79 +1,97 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
rack (~> 1.
|
15
|
-
rack-mount (~> 0.
|
16
|
-
rack-test (~> 0.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
4
|
+
actionmailer (3.1.0.rc4)
|
5
|
+
actionpack (= 3.1.0.rc4)
|
6
|
+
mail (~> 2.3.0)
|
7
|
+
actionpack (3.1.0.rc4)
|
8
|
+
activemodel (= 3.1.0.rc4)
|
9
|
+
activesupport (= 3.1.0.rc4)
|
10
|
+
builder (~> 3.0.0)
|
11
|
+
erubis (~> 2.7.0)
|
12
|
+
i18n (~> 0.6)
|
13
|
+
rack (~> 1.3.0)
|
14
|
+
rack-cache (~> 1.0.1)
|
15
|
+
rack-mount (~> 0.8.1)
|
16
|
+
rack-test (~> 0.6.0)
|
17
|
+
sprockets (~> 2.0.0.beta.10)
|
18
|
+
tzinfo (~> 0.3.27)
|
19
|
+
activemodel (3.1.0.rc4)
|
20
|
+
activesupport (= 3.1.0.rc4)
|
21
|
+
bcrypt-ruby (~> 2.1.4)
|
22
|
+
builder (~> 3.0.0)
|
23
|
+
i18n (~> 0.6)
|
24
|
+
activerecord (3.1.0.rc4)
|
25
|
+
activemodel (= 3.1.0.rc4)
|
26
|
+
activesupport (= 3.1.0.rc4)
|
27
|
+
arel (~> 2.1.1)
|
28
|
+
tzinfo (~> 0.3.27)
|
29
|
+
activeresource (3.1.0.rc4)
|
30
|
+
activemodel (= 3.1.0.rc4)
|
31
|
+
activesupport (= 3.1.0.rc4)
|
32
|
+
activesupport (3.1.0.rc4)
|
33
|
+
multi_json (~> 1.0)
|
34
|
+
arel (2.1.1)
|
35
|
+
bcrypt-ruby (2.1.4)
|
36
|
+
builder (3.0.0)
|
37
|
+
columnize (0.3.4)
|
38
|
+
erubis (2.7.0)
|
36
39
|
has_scope (0.5.0)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
40
|
+
hike (1.1.0)
|
41
|
+
i18n (0.6.0)
|
42
|
+
linecache (0.46)
|
43
|
+
rbx-require-relative (> 0.0.4)
|
44
|
+
mail (2.3.0)
|
41
45
|
i18n (>= 0.4.0)
|
42
46
|
mime-types (~> 1.16)
|
43
47
|
treetop (~> 1.4.8)
|
44
48
|
mime-types (1.16)
|
45
49
|
mocha (0.9.8)
|
46
50
|
rake
|
51
|
+
multi_json (1.0.3)
|
47
52
|
polyglot (0.3.1)
|
48
|
-
rack (1.
|
49
|
-
rack-
|
53
|
+
rack (1.3.0)
|
54
|
+
rack-cache (1.0.2)
|
55
|
+
rack (>= 0.4)
|
56
|
+
rack-mount (0.8.1)
|
50
57
|
rack (>= 1.0.0)
|
51
|
-
rack-
|
58
|
+
rack-ssl (1.3.2)
|
59
|
+
rack
|
60
|
+
rack-test (0.6.0)
|
52
61
|
rack (>= 1.0)
|
53
|
-
rails (3.0.
|
54
|
-
actionmailer (= 3.0.
|
55
|
-
actionpack (= 3.0.
|
56
|
-
activerecord (= 3.0.
|
57
|
-
activeresource (= 3.0.
|
58
|
-
activesupport (= 3.0.
|
62
|
+
rails (3.1.0.rc4)
|
63
|
+
actionmailer (= 3.1.0.rc4)
|
64
|
+
actionpack (= 3.1.0.rc4)
|
65
|
+
activerecord (= 3.1.0.rc4)
|
66
|
+
activeresource (= 3.1.0.rc4)
|
67
|
+
activesupport (= 3.1.0.rc4)
|
59
68
|
bundler (~> 1.0)
|
60
|
-
railties (= 3.0.
|
61
|
-
railties (3.0.
|
62
|
-
actionpack (= 3.0.
|
63
|
-
activesupport (= 3.0.
|
69
|
+
railties (= 3.1.0.rc4)
|
70
|
+
railties (3.1.0.rc4)
|
71
|
+
actionpack (= 3.1.0.rc4)
|
72
|
+
activesupport (= 3.1.0.rc4)
|
73
|
+
rack-ssl (~> 1.3.2)
|
64
74
|
rake (>= 0.8.7)
|
65
|
-
|
75
|
+
rdoc (~> 3.4)
|
76
|
+
thor (~> 0.14.6)
|
66
77
|
rake (0.8.7)
|
67
|
-
|
68
|
-
|
78
|
+
rbx-require-relative (0.0.5)
|
79
|
+
rdoc (3.6.1)
|
80
|
+
responders (0.6.4)
|
81
|
+
ruby-debug (0.10.4)
|
69
82
|
columnize (>= 0.1)
|
70
|
-
ruby-debug-base (~> 0.10.
|
71
|
-
ruby-debug-base (0.10.
|
83
|
+
ruby-debug-base (~> 0.10.4.0)
|
84
|
+
ruby-debug-base (0.10.4)
|
72
85
|
linecache (>= 0.3)
|
86
|
+
sprockets (2.0.0.beta.10)
|
87
|
+
hike (~> 1.0)
|
88
|
+
rack (~> 1.0)
|
89
|
+
tilt (~> 1.1, != 1.3.0)
|
73
90
|
thor (0.14.6)
|
91
|
+
tilt (1.3.2)
|
74
92
|
treetop (1.4.9)
|
75
93
|
polyglot (>= 0.3.1)
|
76
|
-
tzinfo (0.3.
|
94
|
+
tzinfo (0.3.28)
|
77
95
|
|
78
96
|
PLATFORMS
|
79
97
|
ruby
|
@@ -81,6 +99,6 @@ PLATFORMS
|
|
81
99
|
DEPENDENCIES
|
82
100
|
has_scope (~> 0.5.0)
|
83
101
|
mocha
|
84
|
-
rails (= 3.0.
|
102
|
+
rails (= 3.1.0.rc4)
|
85
103
|
responders (~> 0.6.0)
|
86
104
|
ruby-debug
|
data/README.rdoc
CHANGED
@@ -8,8 +8,8 @@ Plus, making your controllers follow a pattern, it helps you to write better
|
|
8
8
|
code by following fat models and skinny controllers convention. There are
|
9
9
|
two screencasts available besides this README:
|
10
10
|
|
11
|
-
http://railscasts.com/episodes/230-inherited-resources
|
12
|
-
http://akitaonrails.com/2009/09/01/screencast-real-thin-restful-controllers-with-inherited-resources
|
11
|
+
* http://railscasts.com/episodes/230-inherited-resources
|
12
|
+
* http://akitaonrails.com/2009/09/01/screencast-real-thin-restful-controllers-with-inherited-resources
|
13
13
|
|
14
14
|
== Installation
|
15
15
|
|
@@ -39,15 +39,12 @@ Or checkout from the v1.0 branch:
|
|
39
39
|
|
40
40
|
== HasScope
|
41
41
|
|
42
|
-
Since Inherited Resources 1.0, has_scope is not part of its core anymore
|
43
|
-
|
44
|
-
will handle all the required hooks automatically.
|
45
|
-
|
46
|
-
has_scope gem is available at:
|
42
|
+
Since Inherited Resources 1.0, has_scope is not part of its core anymore but
|
43
|
+
a gem dependency. Be sure to check the documentation to see how you can use it:
|
47
44
|
|
48
45
|
http://github.com/plataformatec/has_scope
|
49
46
|
|
50
|
-
And can be installed as:
|
47
|
+
And it can be installed as:
|
51
48
|
|
52
49
|
gem install has_scope
|
53
50
|
|
@@ -514,6 +511,8 @@ check this Wiki page:
|
|
514
511
|
|
515
512
|
https://github.com/josevalim/inherited_resources/wiki/Views-Inheritance
|
516
513
|
|
514
|
+
Notice that Rails 3.1 ships with view inheritance built-in.
|
515
|
+
|
517
516
|
== Some DSL
|
518
517
|
|
519
518
|
For those DSL lovers, InheritedResources won't leave you alone. You can overwrite
|
@@ -534,9 +533,9 @@ And then you can rewrite the last example as:
|
|
534
533
|
|
535
534
|
== Bugs and Feedback
|
536
535
|
|
537
|
-
If you discover any bugs
|
536
|
+
If you discover any bugs, please describe it in the issues tracker, including Rails and Inherited Resources versions.
|
538
537
|
|
539
|
-
|
538
|
+
Questions are better handled on StackOverflow.
|
540
539
|
|
541
|
-
Copyright (c)
|
540
|
+
Copyright (c) 2011 José Valim http://blog.plataformatec.com.br
|
542
541
|
See the attached MIT License.
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'inherited_resources/blank_slate'
|
2
|
-
require 'inherited_resources/responder'
|
3
|
-
|
4
1
|
module InheritedResources
|
5
2
|
# = Base
|
6
3
|
#
|
@@ -21,7 +18,7 @@ module InheritedResources
|
|
21
18
|
extend InheritedResources::UrlHelpers
|
22
19
|
|
23
20
|
# Add at least :html mime type
|
24
|
-
respond_to :html
|
21
|
+
respond_to :html if self.mimes_for_respond_to.empty?
|
25
22
|
self.responder = InheritedResources::Responder
|
26
23
|
|
27
24
|
helper_method :resource, :collection, :resource_class, :association_chain,
|
@@ -33,7 +30,8 @@ module InheritedResources
|
|
33
30
|
:parent_url, :parent_path,
|
34
31
|
:smart_resource_url, :smart_collection_url
|
35
32
|
|
36
|
-
self.class_attribute :resource_class,
|
33
|
+
self.class_attribute :resource_class, :instance_writer => false unless self.respond_to? :resource_class
|
34
|
+
self.class_attribute :parents_symbols, :resources_configuration, :instance_writer => false
|
37
35
|
|
38
36
|
protected :resource_class, :parents_symbols, :resources_configuration,
|
39
37
|
:resource_class?, :parents_symbols?, :resources_configuration?
|
@@ -42,4 +40,4 @@ module InheritedResources
|
|
42
40
|
|
43
41
|
inherit_resources(self)
|
44
42
|
end
|
45
|
-
end
|
43
|
+
end
|
data/lib/inherited_resources.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'rails/engine'
|
1
2
|
require 'responders'
|
3
|
+
require 'inherited_resources/blank_slate'
|
4
|
+
require 'inherited_resources/responder'
|
2
5
|
|
3
6
|
module InheritedResources
|
4
7
|
ACTIONS = [ :index, :show, :new, :edit, :create, :update, :destroy ] unless self.const_defined?(:ACTIONS)
|
5
8
|
|
6
9
|
autoload :Actions, 'inherited_resources/actions'
|
7
|
-
autoload :Base, 'inherited_resources/base'
|
8
10
|
autoload :BaseHelpers, 'inherited_resources/base_helpers'
|
9
11
|
autoload :ShallowHelpers, 'inherited_resources/shallow_helpers'
|
10
12
|
autoload :BelongsToHelpers, 'inherited_resources/belongs_to_helpers'
|
@@ -20,7 +22,7 @@ module InheritedResources
|
|
20
22
|
Responders::FlashResponder.flash_keys = array
|
21
23
|
end
|
22
24
|
|
23
|
-
class Railtie < ::Rails::
|
25
|
+
class Railtie < ::Rails::Engine
|
24
26
|
config.inherited_resources = InheritedResources
|
25
27
|
if config.respond_to?(:app_generators)
|
26
28
|
config.app_generators.scaffold_controller = :inherited_resources_controller
|
@@ -49,7 +49,7 @@ module InheritedResources
|
|
49
49
|
# instance variable.
|
50
50
|
#
|
51
51
|
def build_resource
|
52
|
-
get_resource_ivar || set_resource_ivar(end_of_association_chain.send(method_for_build, resource_params))
|
52
|
+
get_resource_ivar || set_resource_ivar(end_of_association_chain.send(method_for_build, *resource_params))
|
53
53
|
end
|
54
54
|
|
55
55
|
# Responsible for saving the resource on :create method. Overwriting this
|
@@ -75,7 +75,7 @@ module InheritedResources
|
|
75
75
|
# end
|
76
76
|
#
|
77
77
|
def update_resource(object, attributes)
|
78
|
-
object.update_attributes(attributes)
|
78
|
+
object.update_attributes(*attributes)
|
79
79
|
end
|
80
80
|
|
81
81
|
# Handle the :destroy method for the resource. Overwrite it to call your
|
@@ -300,7 +300,19 @@ module InheritedResources
|
|
300
300
|
|
301
301
|
# extract attributes from params
|
302
302
|
def resource_params
|
303
|
-
params[resource_request_name] || params[resource_instance_name] || {}
|
303
|
+
rparams = [params[resource_request_name] || params[resource_instance_name] || {}]
|
304
|
+
rparams << as_role if role_given?
|
305
|
+
rparams
|
306
|
+
end
|
307
|
+
|
308
|
+
# checking if role given
|
309
|
+
def role_given?
|
310
|
+
self.resources_configuration[:self][:role].present?
|
311
|
+
end
|
312
|
+
|
313
|
+
# getting role for mass-asignment
|
314
|
+
def as_role
|
315
|
+
{ :as => self.resources_configuration[:self][:role] }
|
304
316
|
end
|
305
317
|
end
|
306
318
|
end
|
@@ -255,6 +255,12 @@ module InheritedResources
|
|
255
255
|
end
|
256
256
|
end
|
257
257
|
|
258
|
+
# Defines the role to use when creating or updating resource.
|
259
|
+
# Makes sense when using rails 3.1 mass assignment conventions
|
260
|
+
def with_role(role)
|
261
|
+
self.resources_configuration[:self][:role] = role.try(:to_sym)
|
262
|
+
end
|
263
|
+
|
258
264
|
private
|
259
265
|
|
260
266
|
def acts_as_singleton! #:nodoc:
|
@@ -273,21 +279,31 @@ module InheritedResources
|
|
273
279
|
end
|
274
280
|
|
275
281
|
def acts_as_shallow! #:nodoc:
|
282
|
+
include BelongsToHelpers
|
276
283
|
include ShallowHelpers
|
277
284
|
end
|
278
285
|
|
279
286
|
# Initialize resources class accessors and set their default values.
|
280
287
|
#
|
281
288
|
def initialize_resources_class_accessors! #:nodoc:
|
282
|
-
# First priority is the namespaced
|
283
|
-
self.resource_class
|
289
|
+
# First priority is the namespaced model, e.g. User::Group
|
290
|
+
self.resource_class ||= begin
|
284
291
|
namespaced_class = self.name.sub(/Controller/, '').singularize
|
285
292
|
namespaced_class.constantize
|
286
293
|
rescue NameError
|
287
294
|
nil
|
288
295
|
end
|
289
296
|
|
290
|
-
# Second priority the
|
297
|
+
# Second priority is the top namespace model, e.g. EngineName::Article for EngineName::Admin::ArticlesController
|
298
|
+
self.resource_class ||= begin
|
299
|
+
namespaced_classes = self.name.sub(/Controller/, '').split('::')
|
300
|
+
namespaced_class = [namespaced_classes.first, namespaced_classes.last].join('::').singularize
|
301
|
+
namespaced_class.constantize
|
302
|
+
rescue NameError
|
303
|
+
nil
|
304
|
+
end
|
305
|
+
|
306
|
+
# Third priority the camelcased c, i.e. UserGroup
|
291
307
|
self.resource_class ||= begin
|
292
308
|
camelcased_class = self.name.sub(/Controller/, '').gsub('::', '').singularize
|
293
309
|
camelcased_class.constantize
|
@@ -126,28 +126,28 @@ module InheritedResources
|
|
126
126
|
#
|
127
127
|
def symbols_for_association_chain #:nodoc:
|
128
128
|
polymorphic_config = resources_configuration[:polymorphic]
|
129
|
-
|
130
129
|
parents_symbols.map do |symbol|
|
131
130
|
if symbol == :polymorphic
|
132
131
|
params_keys = params.keys
|
133
132
|
|
134
|
-
|
135
|
-
params_keys.include?
|
136
|
-
end
|
133
|
+
keys = polymorphic_config[:symbols].map do |poly|
|
134
|
+
params_keys.include?(resources_configuration[poly][:param].to_s) ? poly : nil
|
135
|
+
end.compact
|
137
136
|
|
138
|
-
if
|
137
|
+
if keys.empty?
|
139
138
|
raise ScriptError, "Could not find param for polymorphic association. The request" <<
|
140
139
|
"parameters are #{params.keys.inspect} and the polymorphic " <<
|
141
140
|
"associations are #{polymorphic_config[:symbols].inspect}." unless polymorphic_config[:optional]
|
142
141
|
|
143
142
|
nil
|
144
143
|
else
|
145
|
-
@parent_type =
|
144
|
+
@parent_type = keys[-1].to_sym
|
145
|
+
@parent_types = keys.map(&:to_sym)
|
146
146
|
end
|
147
147
|
else
|
148
148
|
symbol
|
149
149
|
end
|
150
|
-
end.compact
|
150
|
+
end.flatten.compact
|
151
151
|
end
|
152
152
|
|
153
153
|
end
|
@@ -1,87 +1,43 @@
|
|
1
1
|
module InheritedResources
|
2
|
-
#
|
2
|
+
# Shallow provides a functionality that goes on pair with Rails' shallow.
|
3
|
+
# It is very similar to "optional" but it actually finds all the parents
|
4
|
+
# resources instead of leaving them blank. Consider the following example:
|
3
5
|
#
|
4
|
-
#
|
5
|
-
#
|
6
|
+
# belongs_to :post, :shallow => true do
|
7
|
+
# belongs_to :comment
|
8
|
+
# end
|
6
9
|
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# end
|
10
|
-
#
|
11
|
-
# belongs_to accepts several options to be able to configure the association.
|
12
|
-
# For example, if you want urls like /projects/:project_title/tasks, you
|
13
|
-
# can customize how InheritedResources find your projects:
|
14
|
-
#
|
15
|
-
# class TasksController < InheritedResources::Base
|
16
|
-
# belongs_to :project, :finder => :find_by_title!, :param => :project_title
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# It also accepts :route_name, :parent_class and :instance_name as options.
|
20
|
-
# Check the lib/inherited_resources/class_methods.rb for more.
|
21
|
-
#
|
22
|
-
# = nested_belongs_to
|
23
|
-
#
|
24
|
-
# Now, our Tasks get some Comments and you need to nest even deeper. Good
|
25
|
-
# practices says that you should never nest more than two resources, but sometimes
|
26
|
-
# you have to for security reasons. So this is an example of how you can do it:
|
27
|
-
#
|
28
|
-
# class CommentsController < InheritedResources::Base
|
29
|
-
# nested_belongs_to :project, :task
|
30
|
-
# end
|
31
|
-
#
|
32
|
-
# If you need to configure any of these belongs to, you can nested them using blocks:
|
33
|
-
#
|
34
|
-
# class CommentsController < InheritedResources::Base
|
35
|
-
# belongs_to :project, :finder => :find_by_title!, :param => :project_title do
|
36
|
-
# belongs_to :task
|
37
|
-
# end
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
# Warning: calling several belongs_to is the same as nesting them:
|
41
|
-
#
|
42
|
-
# class CommentsController < InheritedResources::Base
|
43
|
-
# belongs_to :project
|
44
|
-
# belongs_to :task
|
45
|
-
# end
|
46
|
-
#
|
47
|
-
# In other words, the code above is the same as calling nested_belongs_to.
|
10
|
+
# When accessed as /comments/1, Inherited Resources will automatically get
|
11
|
+
# the post resource so both objects are actually accessible through the views.
|
48
12
|
#
|
13
|
+
# However, when using optional, Inherited Resources wouldn't actually bother
|
14
|
+
# with finding the parent object.
|
49
15
|
module ShallowHelpers
|
50
|
-
include BelongsToHelpers
|
51
|
-
|
52
16
|
private
|
53
17
|
|
54
|
-
# Evaluate the parent given. This is used to nest parents in the
|
55
|
-
# association chain.
|
56
|
-
#
|
57
|
-
|
58
|
-
# Maps parents_symbols to build association chain. In this case, it
|
59
|
-
# simply return the parent_symbols, however on polymorphic belongs to,
|
60
|
-
# it has some customization.
|
61
|
-
#
|
62
18
|
def symbols_for_association_chain #:nodoc:
|
63
19
|
parent_symbols = parents_symbols.dup
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
instance = resources_configuration[inst_class_name][:parent_class].send(finder_method, params[resources_configuration[inst_class_name][:param]])
|
68
|
-
load_parents(instance, parent_symbols)
|
69
|
-
end
|
70
|
-
if params[:id]
|
20
|
+
instance = nil
|
21
|
+
|
22
|
+
if id = params[:id]
|
71
23
|
finder_method = resources_configuration[:self][:finder] || :find
|
72
|
-
instance
|
73
|
-
|
24
|
+
instance = self.resource_class.send(finder_method, id)
|
25
|
+
elsif parents_symbols.size > 1
|
26
|
+
config = resources_configuration[parent_symbols.pop]
|
27
|
+
finder_method = config[:finder] || :find
|
28
|
+
instance = config[:parent_class].send(finder_method, params[config[:param]])
|
74
29
|
end
|
30
|
+
|
31
|
+
load_parents(instance, parent_symbols) if instance
|
75
32
|
parents_symbols
|
76
33
|
end
|
77
34
|
|
78
35
|
def load_parents(instance, parent_symbols)
|
79
|
-
|
80
36
|
parent_symbols.reverse.each do |parent|
|
81
37
|
instance = instance.send(parent)
|
82
|
-
|
38
|
+
config = resources_configuration[parent]
|
39
|
+
params[config[:param]] = instance.to_param
|
83
40
|
end
|
84
41
|
end
|
85
42
|
end
|
86
|
-
|
87
43
|
end
|