lib/active_graph/node/has_n.rb in activegraph-11.1.0.alpha.4 vs lib/active_graph/node/has_n.rb in activegraph-11.1.0.beta.1
- old
+ new
@@ -32,12 +32,20 @@
def_delegator :@enumerable, delegated_method
end
include Enumerable
- def each(&block)
- result_nodes.each(&block)
+ def each(node = true, rel = nil, &block)
+ return [] unless node || rel
+
+ if node && rel
+ result_nodes.zip(rels)
+ elsif node
+ result_nodes
+ else
+ rels
+ end.each(&block)
end
def each_rel(&block)
rels.each(&block)
end
@@ -101,14 +109,14 @@
@cached_result ||= []
end
def add_to_cache(object, rel = nil)
(@cached_rels ||= []) << rel if rel
- (@cached_result ||= []).tap { |results| results << object unless results.include?(object) }
+ (@cached_result ||= []).tap { |results| results << object if object && !results.include?(object) }
end
def rels
- @cached_rels || super
+ @cached_rels || super.tap { |rels| rels.each { |rel| add_to_cache(nil, rel) } }
end
def cache_query_proxy_result
(result_cache_proc_cache || @query_proxy).to_a.tap { |result| cache_result(result) }
end