gpt4 book ai didi

ruby-on-rails - 在 before_save 中相当于没有查询的 .where - Rails

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:54 25 4
gpt4 key购买 nike

我有一个 Invoice 模型,它 accepts_nested_attributes_for :line_itemsallow_destroy: true。在我的模型中,在 before_save 回调中,我可以像这样引用数据:

self.line_items

一些项目将在保存时被删除。我希望能够只抓取不会像这样删除的项目:

self.line_items.where(_destroy: false)

但是,这显然行不通,因为我正在处理一个未保存的对象。所以,我的问题是如何获得不会被删除的项目列表?我知道我可以在技术上遍历列表并将每个适用的项目添加到一个新数组,但我认为有一些更直观的东西。例如,目前我使用 .sort_by(&:line_number) 而不是 SQL .sort(:line_number) 进行排序,这允许我在内存中排序而不是从 SQL .除了 .where 子句外,我需要同样的东西。

提前致谢。

最佳答案

据我所知,where 专门用于构建 SQL 查询,因此您不能使用它来处理内存中的标准,例如某些内容是否会在保存时被销毁。为此,您可以使用 Enumerable 中的方法模块,包含在集合对象中。您提到的 sort_by 调用正在使用该模块。在这种情况下,您可能会使用 line_items.reject(&:marked_for_destruction?)。查看documentation for marked_for_destruction?了解更多详情。

关于ruby-on-rails - 在 before_save 中相当于没有查询的 .where - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com