Module: Loco::Savable::ClassMethods

Defined in:
lib/motion-loco/savable.rb

Instance Method Summary collapse

Instance Method Details

#adapter(adapter_class, *args) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/motion-loco/savable.rb', line 77

def adapter(adapter_class, *args)
  if adapter_class.is_a? String
    @adapter = adapter_class.split('::').inject(Object) {|mod, class_name| mod.const_get(class_name) }.new(*args)
  else
    @adapter = adapter_class.new(*args)
  end
end

#find(id = nil, &block) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/motion-loco/savable.rb', line 85

def find(id=nil, &block)
  adapter = self.get_class_adapter
  if id.nil?
    # Return all records
    records = RecordArray.new
    adapter.find_all(self, records) do |records|
      block.call(records) if block.is_a? Proc
    end
  elsif id.is_a? Array
    # Return records with given ids
    records = RecordArray.new
    adapter.find_many(self, records, id) do |records|
      block.call(records) if block.is_a? Proc
    end
  elsif id.is_a? Hash
    # Return records matching query
    records = RecordArray.new
    adapter.find_query(self, records, id) do |records|
      block.call(records) if block.is_a? Proc
    end
  else
    record = self.new(id: id)
    adapter.find(record, id) do |record|
      block.call(record) if block.is_a? Proc
    end
  end
end

#get_class_adapterObject



113
114
115
# File 'lib/motion-loco/savable.rb', line 113

def get_class_adapter
  @adapter ||= Adapter.new
end