Sha256: 917b362b7610e24c4ab457b8555ee322938511a3ca024c71e61500e3eba969ba

Contents?: true

Size: 1.17 KB

Versions: 22

Compression:

Stored size: 1.17 KB

Contents

module MagLoft
  class RemoteCollection
    def initialize(resource_class, filter = {})
      @resource_class = resource_class
      @filter = filter
    end

    def new(attributes)
      @resource_class.new(attributes.merge(@filter))
    end

    def find(id)
      @resource_class.where(@filter.merge(id: id)).first
    end

    def where(params)
      @resource_class.where(params.merge(@filter))
    end

    def find_one(params)
      @resource_class.find_one(params.merge(@filter))
    end

    def all
      @resource_class.where(@filter)
    end

    def method_missing(name, *args, &block)
      if name[0..7] == "find_by_" and args.length == 1
        attribute = name[8..-1].to_sym
        if @resource_class.remote_attributes.include?(attribute)
          params = {}
          params[attribute] = args.first
          return self.find_one(params.merge(@filter))
        end
      end
      super
    end

    def respond_to_missing?(method_name, include_private = false)
      method_name.to_s.start_with?('find_by_') || super
    end

    def create(attributes = {})
      entity = @resource_class.new(attributes.merge(@filter))
      entity.save
      entity
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
maglove-2.0.11 lib/magloft/remote_collection.rb
maglove-2.0.10 lib/magloft/remote_collection.rb
maglove-2.0.9 lib/magloft/remote_collection.rb
maglove-2.0.8 lib/magloft/remote_collection.rb
maglove-2.0.7 lib/magloft/remote_collection.rb
maglove-1.1.5 lib/magloft/remote_collection.rb
maglove-1.1.4 lib/magloft/remote_collection.rb
maglove-1.1.3 lib/magloft/remote_collection.rb
maglove-2.0.4 lib/magloft/remote_collection.rb
maglove-2.0.2 lib/magloft/remote_collection.rb
maglove-2.0.1 lib/magloft/remote_collection.rb
maglove-1.1.2 lib/magloft/remote_collection.rb
maglove-2.0.0 lib/magloft/remote_collection.rb
maglove-1.1.1 lib/magloft/remote_collection.rb
maglove-1.1.0 lib/magloft/remote_collection.rb
maglove-1.0.9 lib/magloft/remote_collection.rb
maglove-1.0.8 lib/magloft/remote_collection.rb
maglove-1.0.7 lib/magloft/remote_collection.rb
maglove-1.0.5 lib/magloft/remote_collection.rb
maglove-1.0.4 lib/magloft/remote_collection.rb