paulcarey-relaxdb 0.2.5 → 0.2.6

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.
Files changed (3) hide show
  1. data/Rakefile +1 -1
  2. data/lib/relaxdb/document.rb +41 -24
  3. metadata +2 -2
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'spec/rake/spectask'
4
4
 
5
5
  PLUGIN = "relaxdb"
6
6
  NAME = "relaxdb"
7
- GEM_VERSION = "0.2.5"
7
+ GEM_VERSION = "0.2.6"
8
8
  AUTHOR = "Paul Carey"
9
9
  EMAIL = "paul.p.carey@gmail.com"
10
10
  HOMEPAGE = "http://github.com/paulcarey/relaxdb/"
@@ -181,8 +181,11 @@ module RelaxDB
181
181
  id = instance_variable_get("@#{relationship}_id".to_sym)
182
182
  s << ", #{relationship}_id: #{id}" if id
183
183
  end
184
+ s << ", errors: #{errors.inspect}" unless errors.empty?
184
185
  s << ">"
185
186
  end
187
+
188
+ alias_method :to_s, :inspect
186
189
 
187
190
  def to_json
188
191
  data = {}
@@ -197,7 +200,7 @@ module RelaxDB
197
200
  data["class"] = self.class.name
198
201
  data.to_json
199
202
  end
200
-
203
+
201
204
  # Order changed as of 30/10/2008 to be consistent with ActiveRecord
202
205
  # Not yet sure of final implemention for hooks - may lean more towards DM than AR
203
206
  def save(*validation_skip_list)
@@ -219,34 +222,48 @@ module RelaxDB
219
222
  end
220
223
 
221
224
  def validates?(*skip_list)
222
- total_success = true
223
- properties.each do |prop|
224
- next if skip_list.include? prop
225
- if methods.include? "validate_#{prop}"
226
- prop_val = instance_variable_get("@#{prop}")
227
- success = send("validate_#{prop}", prop_val) rescue false
228
- unless success
229
- if methods.include? "#{prop}_validation_msg"
230
- @errors[prop] = send("#{prop}_validation_msg", prop_val) rescue "validation_msg_exception:invalid:#{prop_val}"
231
- else
232
- @errors[prop] = "invalid:#{prop}"
233
- end
234
- end
235
- total_success &= success
236
- end
237
- end
225
+ props = properties - skip_list
226
+ prop_vals = props.map { |prop| instance_variable_get("@#{prop}") }
227
+
228
+ rels = self.class.belongs_to_rels.keys - skip_list
229
+ rel_vals = rels.map { |rel| instance_variable_get("@#{rel}_id") }
230
+
231
+ att_names = props + rels
232
+ att_vals = prop_vals + rel_vals
238
233
 
239
- self.class.belongs_to_rels.each do |rel, opts|
240
- if methods.include? "validate_#{rel}"
241
- rel_val = instance_variable_get("@#{rel}_id")
242
- success = send("validate_#{rel}", rel_val) rescue false
243
- @errors[rel] = "invalid:#{rel_val}" unless success
244
- total_success &= success
234
+ total_success = true
235
+ att_names.each_index do |i|
236
+ att_name, att_val = att_names[i], att_vals[i]
237
+ if methods.include? "validate_#{att_name}"
238
+ total_success &= validate_att(att_name, att_val)
245
239
  end
246
240
  end
247
-
241
+
248
242
  total_success
249
243
  end
244
+
245
+ def validate_att(att_name, att_val)
246
+ begin
247
+ success = send("validate_#{att_name}", att_val)
248
+ rescue => e
249
+ RelaxDB.logger.warn("Validating #{att_name} with #{att_val} raised #{e}")
250
+ succes = false
251
+ end
252
+
253
+ unless success
254
+ if methods.include? "#{att_name}_validation_msg"
255
+ begin
256
+ @errors[att_name] = send("#{att_name}_validation_msg", att_val)
257
+ rescue => e
258
+ RelaxDB.logger.warn("Validation_msg for #{att_name} with #{att_val} raised #{e}")
259
+ @errors[att_name] = "validation_msg_exception:invalid:#{att_name_val}"
260
+ end
261
+ else
262
+ @errors[att_name] = "invalid:#{att_val}"
263
+ end
264
+ end
265
+ success
266
+ end
250
267
 
251
268
  def new_document?
252
269
  @_rev.nil?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paulcarey-relaxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Carey
@@ -9,7 +9,7 @@ autorequire: relaxdb
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-07 00:00:00 -08:00
12
+ date: 2009-01-08 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency