当我尝试在规范上执行以下代码时,它会给我stack level too deep
。在控制台中正常工作。
def order_fulfillments_without_receipts
@order_fulfillments_without_receipts = []
OrderReconciliation.includes(:order_fulfillment).
where(data_entry_status: OrderReconciliation.data_entry_statuses[:pending_entry]).
find_in_batches do |group|
group.select do |reconciliation|
select_reconciliation?(reconciliation)
end
end
@order_fulfillments_without_receipts
end
def select_reconciliation?(reconciliation)
order_fulfillment = reconciliation.order_fulfillment
receipt_urls_empty = order_fulfillment.get_receipt_urls.empty?
order_fulfillment_id = order_fulfillment.id
@order_fulfillments_without_receipts << order_fulfillment_id
receipt_urls_empty || order_fulfillments_without_receipts.include?(order_fulfillment_id)
end
end
我应该如何修复以避免stack level too deep
?
答案 0 :(得分:1)
您的代码中有一个错误,select_reconciliation?
方法的最后一行||
order_fulfillments_without_receipts
但我认为您的意思是@order_fulfillments_without_receipts
如果没有@
你正在调用order_fulfillments_without_receipts
方法,那么就是无限循环。
为什么在您的测试中而不是在您的控制台中发生这种情况必须与receipt_urls_empty
在每种情况下的情况相关,在您的测试中false
以及在您的控制台中#&} { 39; s true
。