class SequelMapper::LazyObjectProxy
Attributes
known_fields[R]
object_loader[R]
Public Class Methods
new(object_loader, known_fields)
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 5 def initialize(object_loader, known_fields) @object_loader = object_loader @known_fields = known_fields @lazy_object = nil end
Public Instance Methods
__getobj__()
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 26 def __getobj__ lazy_object end
each_loaded(&block)
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 30 def each_loaded(&block) [self].select(&:loaded?).each(&block) end
loaded?()
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 22 def loaded? !!@lazy_object end
method_missing(method_id, *args, &block)
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 14 def method_missing(method_id, *args, &block) if args.empty? && known_fields.include?(method_id) known_fields.fetch(method_id) else lazy_object.public_send(method_id, *args, &block) end end
Private Instance Methods
inspectable_properties()
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 44 def inspectable_properties [ :known_fields, :lazy_object, ] end
lazy_object()
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 40 def lazy_object @lazy_object ||= object_loader.call end
respond_to_missing?(method_id, _include_private = false)
click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 36 def respond_to_missing?(method_id, _include_private = false) known_fields.include?(method_id) || lazy_object.respond_to?(method_id) end