Ruby on rails 相当于.where而不在保存前查询-Rails

Ruby on rails 相当于.where而不在保存前查询-Rails,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我有一个发票模型,它接受:行项目的嵌套属性,并且允许销毁:true。在我的模型中,在保存之前的回调中,我可以引用如下数据: self.line_items self.line_items.where(_destroy: false) 保存后,某些项目将被删除。我想只抓取不会被删除的项目,如下所示: self.line_items self.line_items.where(_destroy: false) 但是,这显然不起作用,因为我正在处理一个未保存的对象。所以,我的问题是如何获得不会

我有一个
发票
模型,它
接受
:行项目
的嵌套属性,并且
允许销毁:true
。在我的模型中,在保存之前的
回调中,我可以引用如下数据:

self.line_items
self.line_items.where(_destroy: false)
保存后,某些项目将被删除。我想只抓取不会被删除的项目,如下所示:

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


提前谢谢

据我所知,
其中
专门用于构建SQL查询,因此您不能使用它来处理内存中的条件,例如保存时是否会销毁某些内容。为此,可以使用模块中的方法,该模块包含在集合对象中。您提到的
sort_by
调用正在使用该模块。在这种情况下,您可能会使用
line\u items.reject(&:marked\u for\u destruction?)
。有关更多详细信息,请参阅。

是什么条件导致行项目被销毁?比如价格=0?如何决定必须保留哪些行项目?