lib/dolly/collection.rb in dolly-3.0.0 vs lib/dolly/collection.rb in dolly-3.0.1
- old
+ new
@@ -1,14 +1,14 @@
module Dolly
class Collection < DelegateClass(Array)
- attr_reader :info
+ attr_reader :options
- def initialize(rows: [], **info)
- @info = info
+ def initialize(rows: [], options: {})
+ @options = options
#TODO: We should raise an exception if one of the
# requested documents is missing
- super rows.map(&collect_docs).compact
+ super rows[:rows].map(&collect_docs).compact
end
def first_or_all(forced_first = false)
return self if forced_first
single? ? first : self
@@ -21,16 +21,26 @@
private
def collect_docs
lambda do |row|
next unless collectable_row?(row)
- klass = Object.const_get doc_type(row[:id])
+ klass = Object.const_get(doc_model(row))
klass.from_doc(row[:doc])
end
end
- def doc_type(key)
- key.match(%r{^([^/]+)/})[1].split('_').collect(&:capitalize).join
+ def doc_model(doc)
+ options[:doc_type] || constantize_key(doc[:doc_type]) || constantize_key(doc_type_for(doc[:id]))
+ end
+
+ def doc_type_for(key)
+ return false if key.nil?
+ key.match(%r{^([^/]+)/})[1]
+ end
+
+ def constantize_key(key)
+ return false if key.nil?
+ key.split('_').collect(&:capitalize).join
end
def collectable_row?(row)
!deleted_doc?(row) && row[:error].nil?
end