Sha256: 8c779a8232c783b040fb07d4cf034175e0328ea23fd5c18b947d897a7fadf407

Contents?: true

Size: 904 Bytes

Versions: 9

Compression:

Stored size: 904 Bytes

Contents

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

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
        model = @model.new_model(nil, options)

        @model.attributes ||= {}
        @model.attributes[method_name] = model
      end


      return model
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
volt-0.8.8 lib/volt/models/persistors/store.rb
volt-0.8.7 lib/volt/models/persistors/store.rb
volt-0.8.6 lib/volt/models/persistors/store.rb
volt-0.8.5 lib/volt/models/persistors/store.rb
volt-0.8.4 lib/volt/models/persistors/store.rb
volt-0.8.3 lib/volt/models/persistors/store.rb
volt-0.8.2 lib/volt/models/persistors/store.rb
volt-0.8.1 lib/volt/models/persistors/store.rb
volt-0.8.0 lib/volt/models/persistors/store.rb