Sha256: c18cc2e733f38951bd7d1f7fd06343e854ffcdb9a81ce00c936ffe9b08c03f25

Contents?: true

Size: 1.17 KB

Versions: 20

Compression:

Stored size: 1.17 KB

Contents

require 'volt/models/persistors/base'
require 'volt/models/persistors/model_identity_map'

module Volt
  module Persistors
    class Store < Base
      @@identity_map = ModelIdentityMap.new

      def initialize(model, tasks = nil)
        @tasks = tasks
        @model = model

        @saved = false
      end

      def saved?
        @saved
      end

      # On stores, we store the model so we don't have to look it up
      # every time we do a read.
      def read_new_model(method_name)
        # On stores, plural associations are automatically assumed to be
        # collections.
        options = @model.options.merge(parent: @model, path: @model.path + [method_name])
        if method_name.plural?
          model = @model.new_array_model([], options)
        else
          options[:persistor] = @model.persistor
          model= @model.new_model(nil, options)

          # TODO: Might not need to assign this
          @model.attributes ||= {}
          @model.attributes[method_name] = model
        end

        model
      end

      def clear_identity_map
        @@identity_map.clear
      end

      def inspect
        "<#{self.class}:#{object_id}>"
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 lib/volt/models/persistors/store.rb
volt-0.9.7.pre7 lib/volt/models/persistors/store.rb
volt-0.9.7.pre6 lib/volt/models/persistors/store.rb
volt-0.9.7.pre5 lib/volt/models/persistors/store.rb
volt-0.9.7.pre3 lib/volt/models/persistors/store.rb
volt-0.9.7.pre2 lib/volt/models/persistors/store.rb
volt-0.9.6 lib/volt/models/persistors/store.rb
volt-0.9.6.pre3 lib/volt/models/persistors/store.rb
volt-0.9.6.pre2 lib/volt/models/persistors/store.rb
volt-0.9.6.pre1 lib/volt/models/persistors/store.rb
volt-0.9.5 lib/volt/models/persistors/store.rb
volt-0.9.5.pre12 lib/volt/models/persistors/store.rb
volt-0.9.5.pre11 lib/volt/models/persistors/store.rb
volt-0.9.5.pre9 lib/volt/models/persistors/store.rb
volt-0.9.5.pre8 lib/volt/models/persistors/store.rb
volt-0.9.5.pre7 lib/volt/models/persistors/store.rb
volt-0.9.5.pre6 lib/volt/models/persistors/store.rb
volt-0.9.5.pre5 lib/volt/models/persistors/store.rb
volt-0.9.5.pre4 lib/volt/models/persistors/store.rb
volt-0.9.5.pre3 lib/volt/models/persistors/store.rb