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