class Fixably::ResourceLazyLoader
Attributes
associations_to_expand[R]
model[R]
Public Class Methods
new(model:)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 8 def initialize(model:) if !model.respond_to?(:ancestors) || !model.ancestors.include?(ApplicationResource) raise( ArgumentError, "The model is expected to be a class that extend ApplicationResource" ) end @model = model @associations_to_expand = Set.new end
Public Instance Methods
all(*args)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 56 def all(*args) options = expand_associations(args.slice(0) || {}) arguments = [options].concat(args[1..] || []) model.all(*arguments) end
find(*args)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 34 def find(*args) id = args.slice(0) options = expand_associations(args.slice(1) || {}) arguments = [options].concat(args[2..] || []) model.find(id, *arguments) end
first(*args)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 42 def first(*args) options = expand_associations(args.slice(0) || {}) arguments = [options].concat(args[1..] || []) model.first(*arguments) end
includes(association)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 21 def includes(association) unless model.reflections.key?(association) raise( ArgumentError, "#{association} is not a known association of #{model}" ) end associations_to_expand << association self end
last(*args)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 49 def last(*args) options = expand_associations(args.slice(0) || {}) arguments = [options].concat(args[1..] || []) model.last(*arguments) end
where(clauses = {})
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 63 def where(clauses = {}) arguments = expand_associations(clauses) model.where(arguments) end
Private Instance Methods
expand_associations(args)
click to toggle source
# File lib/fixably/resource_lazy_loader.rb, line 70 def expand_associations(args) expand = args[:expand].to_a.to_set args[:expand] = expand.merge(associations_to_expand) args end