inherited_resources_helpers 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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