kelredd-resourceful 0.7.7 → 0.7.9

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.
@@ -0,0 +1,75 @@
1
+ module Resourceful
2
+ module Model
3
+ module ExternalAssociations
4
+
5
+ module ClassMethods
6
+
7
+ protected
8
+
9
+ def has_one_resourceful(name, config={})
10
+ has_many(name, config).first
11
+ end
12
+
13
+ def has_many_resourceful(name, config={})
14
+ clean_name = Resourceful::Model::Base.cleanup_name(name)
15
+ config ||= {}
16
+ raise ArgumentError, "has_many_resourceful requires a :class_name option to be specified" unless config[:class_name]
17
+ class_name = config.delete(:class_name).to_s
18
+ force = config.delete(:force) || true
19
+ define_method(name) do
20
+ klass = class_name.resourceful_constantize
21
+ raise ArgumentError, "has_many_resourceful :class_name '#{class_name}' is not defined" if klass.nil?
22
+ unless klass.respond_to?(:find)
23
+ raise NotImplementedError, "has_many_resourceful expects #{klass} to be findable (ie mixin the Findable helper)"
24
+ end
25
+ fk = config.delete(:foreign_key) || "#{self.class.name.demodulize.underscore}_id"
26
+ fk_method = config.delete(:foreign_key_method) || 'id'
27
+ config[fk] = self.send(fk_method)
28
+ instance_variable_get("@#{clean_name}") || \
29
+ instance_variable_set("@#{clean_name}", \
30
+ klass.find(:all, config, force)
31
+ )
32
+ end
33
+ end
34
+
35
+ def belongs_to_resourceful(name, config={})
36
+ clean_name = Resourceful::Model::Base.cleanup_name(name)
37
+ config ||= {}
38
+ raise ArgumentError, "belongs_to_resourceful requires a :class_name option to be specified" unless config[:class_name]
39
+ class_name = config.delete(:class_name).to_s
40
+ foreign_key = config.delete(:foreign_key) || "#{clean_name}_id"
41
+ force = config.delete(:force) || true
42
+ define_method(name) do
43
+ klass = class_name.resourceful_constantize
44
+ raise ArgumentError, "belongs_to_resourceful :class_name '#{class_name}' is not defined" if klass.nil?
45
+ unless self.respond_to?(foreign_key)
46
+ raise ArgumentError, "belongs_to_resourceful requires a '#{foreign_key}' method defined to return the foreign_key"
47
+ end
48
+ unless klass.respond_to?(:find)
49
+ raise NotImplementedError, "belongs_to_resourceful expects #{klass} to be findable (ie mixin the Findable helper)"
50
+ end
51
+ fk = self.send(foreign_key)
52
+ if fk.nil? || (fk.respond_to?('empty?') && fk.empty?)
53
+ nil
54
+ else
55
+ instance_variable_get("@#{clean_name}") || \
56
+ instance_variable_set("@#{clean_name}", \
57
+ klass.find(fk, config, force)
58
+ )
59
+ end
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ module InstanceMethods
66
+ end
67
+
68
+ def self.included(receiver)
69
+ receiver.extend ClassMethods
70
+ receiver.send :include, InstanceMethods
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -81,6 +81,10 @@ module Resourceful
81
81
  yield attributes(true)
82
82
  @data = nil
83
83
  end
84
+
85
+ def self.cleanup_name(name)
86
+ name.to_s.gsub(/\W/,'')
87
+ end
84
88
 
85
89
  protected
86
90
 
@@ -110,10 +114,6 @@ module Resourceful
110
114
  end
111
115
  end
112
116
 
113
- def self.cleanup_name(name)
114
- name.to_s.gsub(/\W/,'')
115
- end
116
-
117
117
  private
118
118
 
119
119
  def fetch_attribute(clean_name, config, content_method)
@@ -46,7 +46,7 @@ module Resourceful
46
46
  raise ArgumentError, "belongs_to requires a '#{foreign_key}' method defined to return the foreign_key"
47
47
  end
48
48
  unless klass.respond_to?(:find)
49
- raise NotImplementedError, "has_many expects #{klass} to be findable (ie mixin the Findable helper)"
49
+ raise NotImplementedError, "belongs_to expects #{klass} to be findable (ie mixin the Findable helper)"
50
50
  end
51
51
  fk = self.send(foreign_key)
52
52
  if fk.nil? || (fk.respond_to?('empty?') && fk.empty?)
@@ -3,7 +3,7 @@ module Resourceful
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 7
6
- TINY = 7
6
+ TINY = 9
7
7
 
8
8
  def self.to_s # :nodoc:
9
9
  [MAJOR, MINOR, TINY].join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kelredd-resourceful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-16 00:00:00 -07:00
12
+ date: 2009-09-21 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -92,6 +92,7 @@ files:
92
92
  - lib/resourceful/exceptions.rb
93
93
  - lib/resourceful/extensions.rb
94
94
  - lib/resourceful/model
95
+ - lib/resourceful/model/activerecord_associations.rb
95
96
  - lib/resourceful/model/attribute_types.rb
96
97
  - lib/resourceful/model/base.rb
97
98
  - lib/resourceful/model/embedded_associations.rb