inherited_resources_helpers 0.0.4 → 0.0.5

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.
@@ -4,48 +4,49 @@ module InheritedResources
4
4
  def self.included(base)
5
5
  base.extend(ClassMethods)
6
6
  end
7
-
7
+
8
8
  module ClassMethods
9
9
  def define_resource_accessors(controller)
10
10
  symbols = parents_symbols + [:self]
11
- symbols.inject([]) do |parents, name|
12
- define_resource_accessor(name, parents)
11
+ symbols.inject([]) do |parents, symbol|
12
+ config = resources_configuration[symbol]
13
+ name = symbol == :self ? config[:instance_name] : symbol
14
+
15
+ define_resource_accessor(name, config, parents.last)
16
+ helper_method(name)
13
17
  parents << name
14
18
  end
15
19
  @resource_accessors_defined = true
16
20
  end
17
-
18
- def define_resource_accessor(name, parents)
19
- config = resources_configuration[name]
20
- target = parents.last || config[:parent_class]
21
- method = config[:finder] || config[:collection_name]
21
+
22
+ def define_resource_accessor(name, config, target)
23
+ target ||= config[:parent_class] || resource_class
22
24
  param = config[:param] || :id
23
- name = name == :self ? config[:instance_name] : name
24
25
 
25
26
  if target.is_a?(Symbol)
26
- define_method(name) { send(target).send(method, params[param]).first }
27
+ define_method(name) { send(target).send(config[:collection_name], params[param]).first }
27
28
  else
28
- define_method(name) { target.send(method, params[param]) }
29
+ define_method(name) { target.send(config[:finder] || :find, params[param]) }
29
30
  end
30
31
  end
31
-
32
+
32
33
  def resource_accessors_defined?
33
34
  !!@resource_accessors_defined
34
35
  end
35
-
36
+
36
37
  def resource_accessor?(name)
37
38
  resource_accessors.include?(name.to_sym)
38
39
  end
39
-
40
+
40
41
  def resource_accessors
41
42
  @resource_accessors ||= resources_configuration.except(:polymorphic).values.map { |c| c[:instance_name] }
42
43
  end
43
44
  end
44
-
45
- def respond_to?(name)
45
+
46
+ def respond_to?(name, include_private = false)
46
47
  self.class.resource_accessor?(name) || super
47
48
  end
48
-
49
+
49
50
  def method_missing(name, *args, &block)
50
51
  self.class.define_resource_accessors(self) unless self.class.resource_accessors_defined?
51
52
  respond_to?(name) ? send(name) : super
@@ -1,3 +1,3 @@
1
1
  module InheritedResourcesHelpers
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inherited_resources_helpers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs