Sha256: 7c61c0ebf3fc16d2287fc22c92896a46a4e74133ff82ed0ebbef03e0bad1f508

Contents?: true

Size: 1.01 KB

Versions: 6

Compression:

Stored size: 1.01 KB

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)
      end
      
      @model.attributes ||= {}
      @model.attributes[method_name] = model

      # if model.is_a?(StoreArray)# && model.state == :not_loaded
      #   model.load!
      # end
    
      return model
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
volt-0.6.5 lib/volt/models/persistors/store.rb
volt-0.6.4 lib/volt/models/persistors/store.rb
volt-0.6.3 lib/volt/models/persistors/store.rb
volt-0.6.2 lib/volt/models/persistors/store.rb
volt-0.6.1 lib/volt/models/persistors/store.rb
volt-0.6.0 lib/volt/models/persistors/store.rb