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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '0529ed61553454c5740cad93d4fe367c55bafff4'
4
- data.tar.gz: 3ff4ab1445c74118f8cc20dfb3d4b5e45565892b
3
+ metadata.gz: 0717106b37db963380dd513a9c01438d19604fe1
4
+ data.tar.gz: 7d439e5161400da02a64387e874bbef512af1eca
5
5
  SHA512:
6
- metadata.gz: 4b0e04212dd05fb91f1fe73d5c89f570dc5a52d4fbdd2d89f3042dfea8dc4af1bafc2a74c586b916f460cba80637b4393da2d9411a7afb05120042104c3cb787
7
- data.tar.gz: f34fc4132f7e89f8fc2c4196e757953f8041fb238dc349720f563ac5a6a42077cc93eaa0d0c0f1a5a6395aad57e801f357770f2fdd0e109b5b4ab7fec44049e0
6
+ metadata.gz: 683fe5e8e183155af3378d0d46401dec8e0520cada8e7a066486a1369783610a0641b5c4920b8e62befa4d52867eff4c9e13af94929069250a44c51b9053b803
7
+ data.tar.gz: 07a96080f455778fa16826d7ed09de93d4e331c90699d34201de8dba6794164245013c20a9c1514e813196cc5a854e7382cdf95055fef519a62df1c12975eb1c
@@ -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
- validates "#{name}_id".to_sym, presence: true
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
- if options[:dependent]
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
@@ -1,3 +1,3 @@
1
1
  module Dynamord
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - vibhanshu