ocean-dynamo 0.1.3 → 0.1.4

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: f5ae28e5e708104d6732e25bcda4af633b69570d
4
- data.tar.gz: 002e58e877f964d1a547b330fb5bf3cceadfcabe
3
+ metadata.gz: 4bb66981fe7a08584a0a51f81e8cc458a354cac7
4
+ data.tar.gz: d3ee6d39bfac9fe8622b91e7e485dbcbca16c8d3
5
5
  SHA512:
6
- metadata.gz: 4b2065e46adad9805f0fa494a627aad7d1f577156d195309cd7ba4cf719638f7ded898d57c782576a20f08d621020a93269abc00e66cfb8d8c5103582dc6abd3
7
- data.tar.gz: 892ce7432d451aae76b8ded119501c973961a5ee0d2cbb3b9a6ca4fd5027540ffb2f89d7c66f706a5d7c78d9b326f1b28bb721f749845d7b68c5b5b7b95a0c07
6
+ metadata.gz: 4408c7038ebb322f96fd12d65b399f2dc7fdd59708a7f8d13659bba56b4996bb4987e9d052004e7cc0fa35c41e16548364ae87e7df9823adb5d2c03c0dc1ed29
7
+ data.tar.gz: 29d4cdabc73cd9f84895cd9000c10099f001d56d5bffdfc92d0aab2dee4a4e1b66316e405945f38228814d40224e8ae91aabdcfbc9342da5ab57d51f297d13f5
@@ -240,18 +240,21 @@ module OceanDynamo
240
240
  attr_reader :dynamo_item
241
241
 
242
242
 
243
- def initialize(attributes={})
243
+ def initialize(attrs={})
244
244
  run_callbacks :initialize do
245
245
  @attributes = HashWithIndifferentAccess.new
246
- fields.each do |name, v|
247
- write_attribute(name, evaluate_default(v[:default])) unless read_attribute(name)
246
+ fields.each do |name, md|
247
+ write_attribute(name, evaluate_default(md[:default], md[:type]))
248
248
  self.class.class_eval "def #{name}; read_attribute('#{name}'); end"
249
249
  self.class.class_eval "def #{name}=(value); write_attribute('#{name}', value); end"
250
250
  if fields[name][:type] == :boolean
251
251
  self.class.class_eval "def #{name}?; read_attribute('#{name}'); end"
252
252
  end
253
253
  end
254
- super
254
+ if attrs
255
+ attrs.delete_if { |k, v| !fields.has_key?(k) }
256
+ end
257
+ super(attrs)
255
258
  @dynamo_item = nil
256
259
  @destroyed = false
257
260
  @new_record = true
@@ -352,8 +355,8 @@ module OceanDynamo
352
355
  def deserialize_attribute(value, metadata,
353
356
  type: metadata[:type],
354
357
  default: metadata[:default])
355
- if value == nil && default != nil && type != :string
356
- return evaluate_default(default)
358
+ if value == nil && type != :string
359
+ return evaluate_default(default, type)
357
360
  end
358
361
  case type
359
362
  when :string
@@ -445,7 +448,8 @@ module OceanDynamo
445
448
  run_callbacks :commit do
446
449
  run_callbacks :save do
447
450
  run_callbacks :create do
448
- write_attribute(table_hash_key, SecureRandom.uuid) if read_attribute(table_hash_key) == nil
451
+ k = read_attribute(table_hash_key)
452
+ write_attribute(table_hash_key, SecureRandom.uuid) if k == "" || k == nil
449
453
  t = Time.now
450
454
  self.created_at ||= t
451
455
  self.updated_at ||= t
@@ -516,10 +520,11 @@ module OceanDynamo
516
520
 
517
521
  protected
518
522
 
519
- def evaluate_default(v)
520
- return v.call if v.is_a?(Proc)
521
- return v.clone if v.is_a?(Array) || v.is_a?(String) # Instances need their own copy
522
- v
523
+ def evaluate_default(default, type)
524
+ return default.call if default.is_a?(Proc)
525
+ return "" if default == nil && type == :string
526
+ return default.clone if default.is_a?(Array) || default.is_a?(String) # Instances need their own copy
527
+ default
523
528
  end
524
529
 
525
530
 
@@ -1,3 +1,3 @@
1
1
  module OceanDynamo
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocean-dynamo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Bengtson