Sha256: 82c42ff4bf43e035b106a3933eb2a75f71527b009364468b13527d78c2311367
Contents?: true
Size: 1.22 KB
Versions: 5
Compression:
Stored size: 1.22 KB
Contents
require 'spyke/exceptions' module Spyke class Relation include Enumerable attr_reader :klass, :params attr_writer :params delegate :to_ary, :[], :any?, :empty?, :last, :size, :metadata, to: :find_some def initialize(klass, options = {}) @klass, @options, @params = klass, options, {} end def where(conditions = {}) relation = clone relation.params = params.merge(conditions) relation end # Overrides Enumerable find def find(id) scoping { klass.find(id) } end def find_one @find_one ||= klass.new_from_result(fetch) end def find_some @find_some ||= klass.new_collection_from_result(fetch) end def each find_some.each { |record| yield record } end def uri @options[:uri] end private def method_missing(name, *args, &block) if klass.respond_to?(name) scoping { klass.send(name, *args) } else super end end # Keep hold of current scope while running a method on the class def scoping previous, klass.current_scope = klass.current_scope, self yield ensure klass.current_scope = previous end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
spyke-1.8.3 | lib/spyke/relation.rb |
spyke-1.8.2 | lib/spyke/relation.rb |
spyke-1.8.1 | lib/spyke/relation.rb |
spyke-1.8.0 | lib/spyke/relation.rb |
spyke-1.7.2 | lib/spyke/relation.rb |