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)