diff --git a/lib/toy/attributes.rb b/lib/toy/attributes.rb index 7c49265..24c3291 100644 --- a/lib/toy/attributes.rb +++ b/lib/toy/attributes.rb @@ -27,7 +27,7 @@ def attribute?(key) end def initialize(attrs={}) - initialize_attributes_with_defaults + initialize_attributes self.attributes = attrs write_attribute :id, self.class.next_key(self) unless id? end @@ -98,7 +98,7 @@ def attribute?(key) read_attribute(key).present? end - def initialize_attributes_with_defaults + def initialize_attributes @attributes ||= {} self.class.defaulted_attributes.each do |attribute| @attributes[attribute.name.to_s] = attribute.default diff --git a/lib/toy/persistence.rb b/lib/toy/persistence.rb index 55a0bf6..5422017 100644 --- a/lib/toy/persistence.rb +++ b/lib/toy/persistence.rb @@ -43,7 +43,7 @@ def initialize(attrs={}) def initialize_from_database(attrs={}) @_new_record = false - initialize_attributes_with_defaults + initialize_attributes send("attributes=", attrs, false) self end diff --git a/lib/toy/reloadable.rb b/lib/toy/reloadable.rb index f49c422..f40f53e 100644 --- a/lib/toy/reloadable.rb +++ b/lib/toy/reloadable.rb @@ -4,7 +4,7 @@ def reload if attrs = adapter.read(id) attrs['id'] = id instance_variables.each { |ivar| instance_variable_set(ivar, nil) } - initialize_attributes_with_defaults + initialize_attributes send(:attributes=, attrs, new_record?) self.class.lists.each_key { |name| send(name).reset } self.class.references.each_key { |name| send("reset_#{name}") }