Sha256: dc81233f958b359f17aa8e6f1edd962a3f3c741875aa277c7456b49fd192d8d2
Contents?: true
Size: 1.66 KB
Versions: 4
Compression:
Stored size: 1.66 KB
Contents
module Acfs::Model # Methods providing the query interface for finding resouces. # # Example # class MyUser # include Acfs::Model # end # # MyUser.find(5) # Find single resource # MyUser.all # Full or partial collection of # # resources # Comment.where(user: user.id) # Collection with additional parameter # # to filter resources # module QueryMethods extend ActiveSupport::Concern module ClassMethods # Try to load a resource by given id. # # Example # User.find(5) # Will query `http://base.url/users/5` # def find(id, options = {}, &block) model = self.new request = case id when Hash Acfs::Request.new url, params: id else Acfs::Request.new url(id.to_s) end service.queue(request) do |response| model.attributes = response.data model.loaded! block.call model unless block.nil? end model end # Try to load all resources. # def all(params = {}, &block) collection = ::Acfs::Collection.new service.queue(Acfs::Request.new(url, params: params)) do |response| response.data.each do |obj| collection << self.new.tap do |m| m.attributes = obj m.loaded! end end collection.loaded! block.call collection unless block.nil? end collection end alias :where :all end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
acfs-0.5.1 | lib/acfs/model/query_methods.rb |
acfs-0.5.0 | lib/acfs/model/query_methods.rb |
acfs-0.4.0 | lib/acfs/model/query_methods.rb |
acfs-0.3.0 | lib/acfs/model/query_methods.rb |