lib/ripple/embedded_document/persistence.rb in ripple-0.9.5 vs lib/ripple/embedded_document/persistence.rb in ripple-1.0.0.beta

- old
+ new

@@ -1,19 +1,5 @@ -# Copyright 2010 Sean Cribbs, Sonian Inc., and Basho Technologies, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - require 'active_support/concern' require 'ripple/translation' module Ripple # Exception raised when save is called on an EmbeddedDocument that @@ -30,11 +16,11 @@ # operations to the parent document. module Persistence extend ActiveSupport::Concern module ClassMethods - # Creates a method that points to the parent document. + # Creates a method that points to the parent document. def embedded_in(parent) define_method(parent) { @_parent_document } end end @@ -66,18 +52,20 @@ end # Saves this embedded document by delegating to the root document. def save(*args) if _root_document - _root_document.save(*args) + run_save_callbacks do + _root_document.save(*args) + end else raise NoRootDocument.new(self, :save) end end # @private def attributes_for_persistence - attributes.merge("_type" => self.class.name) + raw_attributes.merge("_type" => self.class.name) end # The root {Ripple::Document} to which this embedded document belongs. def _root_document @_parent_document.try(:_root_document)