【发布时间】:2018-09-19 18:24:23
【问题描述】:
我们有代码可以有效地做到这一点。
obj.things.each |thing|
... do some stuff ...
obj.things.destroy(thing)
... do some more stuff...
end
我们发现,在更改 CollectionProxy 的同时迭代 CollectionProxy 只会导致一半的项目被迭代。目前我们正在通过将代理扁平化为一个数组来解决这个问题。但这意味着将所有things 复制到内存中。
obj.things.to_a.each |thing|
...
end
有没有办法在不将整个关联拉入内存的情况下对集合进行迭代和变异?
或者,有没有比我们使用的更好的模式?例如,包装代码是我们不想在每次销毁关联时都做的事情,所以我们没有使用关联挂钩。我们可以编写一个可以使用钩子的子类或作用域吗?
【问题讨论】:
标签: ruby-on-rails collections ruby-on-rails-5