dynamord 0.0.2 → 0.0.3
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/lib/dynamord.rb +46 -15
- data/lib/dynamord/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0717106b37db963380dd513a9c01438d19604fe1
|
4
|
+
data.tar.gz: 7d439e5161400da02a64387e874bbef512af1eca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 683fe5e8e183155af3378d0d46401dec8e0520cada8e7a066486a1369783610a0641b5c4920b8e62befa4d52867eff4c9e13af94929069250a44c51b9053b803
|
7
|
+
data.tar.gz: 07a96080f455778fa16826d7ed09de93d4e331c90699d34201de8dba6794164245013c20a9c1514e813196cc5a854e7382cdf95055fef519a62df1c12975eb1c
|
data/lib/dynamord.rb
CHANGED
@@ -9,9 +9,23 @@ module Dynamord
|
|
9
9
|
module ClassMethods
|
10
10
|
##################################################################################
|
11
11
|
# Connection methods from dynamoid to active_record
|
12
|
+
def configure_dependent(name, dep)
|
13
|
+
if dep
|
14
|
+
case dep
|
15
|
+
when :destroy, :delete_all
|
16
|
+
after_destroy { |record| record.send(name.to_sym).destroy_all ? true : false }
|
17
|
+
when :nullify
|
18
|
+
after_destroy { |record| record.send(name.to_sym).update_attributes("#{name}".to_sym => nil) ? true : false}
|
19
|
+
when :restrict_with_exception, :restrict_with_error
|
20
|
+
before_destroy { |record| raise Dynamoid::Errors::RecordNotDestroyed.new(record); false }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
12
24
|
def to_active_record_belongs_to(name, options = {})
|
13
25
|
field "#{name}_id".to_sym, :integer
|
14
|
-
|
26
|
+
if options[:optional]
|
27
|
+
validates "#{name}_id".to_sym, presence: true
|
28
|
+
end
|
15
29
|
object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
|
16
30
|
self.instance_eval do
|
17
31
|
define_method(name) do |reload = false|
|
@@ -28,7 +42,7 @@ module Dynamord
|
|
28
42
|
define_method("#{name}=") do |new_instance|
|
29
43
|
self.send("#{name}_id=", new_instance.id)
|
30
44
|
self.instance_variable_set("@#{name}", nil)
|
31
|
-
self.save
|
45
|
+
# self.save
|
32
46
|
end
|
33
47
|
end
|
34
48
|
end
|
@@ -37,17 +51,7 @@ module Dynamord
|
|
37
51
|
plural_name = name.to_s.pluralize
|
38
52
|
foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
|
39
53
|
object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize
|
40
|
-
|
41
|
-
case options[:dependent]
|
42
|
-
when :destroy
|
43
|
-
after_destroy { |record| record.send(name).delete_all }
|
44
|
-
when :delete_all
|
45
|
-
when :nullify
|
46
|
-
when :restrict_with_exception
|
47
|
-
when :restrict_with_error
|
48
|
-
end
|
49
|
-
end
|
50
|
-
after_destroy { |record| record.send(name).delete }
|
54
|
+
configure_dependent(name, options[:dependent])
|
51
55
|
self.instance_eval do
|
52
56
|
define_method(plural_name) do |reload = false|
|
53
57
|
if reload
|
@@ -66,6 +70,7 @@ module Dynamord
|
|
66
70
|
def to_active_record_has_one(name, options = {})
|
67
71
|
foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
|
68
72
|
object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
|
73
|
+
configure_dependent(name, options[:dependent])
|
69
74
|
self.instance_eval do
|
70
75
|
define_method(name) do |reload = false|
|
71
76
|
if reload
|
@@ -86,6 +91,9 @@ module Dynamord
|
|
86
91
|
# Connection methods from active_record to dynamoid
|
87
92
|
def from_active_record_belongs_to(name, options = {})
|
88
93
|
object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
|
94
|
+
if options[:optional]
|
95
|
+
validates "#{name}_id".to_sym, presence: true
|
96
|
+
end
|
89
97
|
self.instance_eval do
|
90
98
|
define_method(name) do |reload = false|
|
91
99
|
if reload
|
@@ -101,15 +109,37 @@ module Dynamord
|
|
101
109
|
define_method("#{name}=") do |new_instance|
|
102
110
|
self.send("#{name}_id=", new_instance.id)
|
103
111
|
self.instance_variable_set("@#{name}", nil)
|
104
|
-
self.save
|
112
|
+
# self.save
|
105
113
|
end
|
106
114
|
end
|
107
115
|
end
|
108
|
-
|
116
|
+
def dynamoid_has_many(name, options = {})
|
117
|
+
configure_dependent(name, options[:dependent])
|
118
|
+
self.has_many name, options
|
119
|
+
end
|
120
|
+
# def dynamoid_has_one_belongs_to(name, options = {})
|
121
|
+
# before_create do |record|
|
122
|
+
# object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
|
123
|
+
# begin
|
124
|
+
# if object_class.where(:id => record.send("#{name}_ids").first).count < 1
|
125
|
+
# true
|
126
|
+
# end
|
127
|
+
# rescue
|
128
|
+
# true
|
129
|
+
# end
|
130
|
+
# false
|
131
|
+
# end
|
132
|
+
# self.belongs_to name, options
|
133
|
+
# end
|
134
|
+
def dynamoid_has_one(name, options = {})
|
135
|
+
configure_dependent(name, options[:dependent])
|
136
|
+
self.has_many name, options
|
137
|
+
end
|
109
138
|
def from_active_record_has_many(name, options = {})
|
110
139
|
plural_name = name.to_s.pluralize
|
111
140
|
foreign_key = options[:foreign_key] || "#{self.name.underscore}_id".to_sym
|
112
141
|
object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize
|
142
|
+
configure_dependent(name, options[:dependent])
|
113
143
|
self.instance_eval do
|
114
144
|
define_method(plural_name) do |reload = false|
|
115
145
|
if reload
|
@@ -128,6 +158,7 @@ module Dynamord
|
|
128
158
|
def from_active_record_has_one(name, options = {})
|
129
159
|
foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
|
130
160
|
object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
|
161
|
+
configure_dependent(name, options[:dependent])
|
131
162
|
self.instance_eval do
|
132
163
|
define_method(name) do |reload = false|
|
133
164
|
if reload
|
data/lib/dynamord/version.rb
CHANGED