我一直在想,假设我有一个模型,它的属性在每个实例中都依赖于其他实例中的相同属性。最好的例子是列表中项目的order属性。
更新其余商品的order属性的最佳位置是在before_update回调方法中,因为您同时拥有商品的旧值和新值。
但是现在,每当您更新列表中的其他项时,回调都会被一次又一次地调用……
我正在寻找一种优雅的方法来解决这个问题。
我听说过:update_without_callbacks方法,但我不想使用私有方法,而且我觉得没有必要添加额外的属性。
有什么好主意吗?提前感谢!
发布于 2012-04-04 18:26:05
一种方法是使用update_all
批量设置所有其他项目的顺序。
这样,您可以有效地将查询的数量限制为一个,并防止触发任何回调。
发布于 2012-04-04 18:53:49
我觉得你必须跨条目进行这种类型的更新,这表明你还没有正确地概念化你的问题。为什么不创建一个具有order属性的列表模型,然后在列表模型和商品模型之间创建一对多关系。这样,只有一个地方可以更新排序信息,而不需要复杂而脆弱的回调。
https://stackoverflow.com/questions/10017042
复制相似问题