假设我有3个模型:
型号A具有多个型号B型号B具有多个型号C
我正在查询ModelA,但在ModelC中,我有多个相同类型的,假设我有3个,但我只需要最近的一个。
我试过做这样的事...
records = ModelA.where(some query).includes ModelB includes ModelC
// convert activerecord collection to array
records = records.to_a
records.each do |record|
record.modelBs.each do |modelB|
filter the modelCs i don't need
modelB.modelCs = filteredModelCs
end
end
return records
但不是仅仅返回记录数组,而是运行UPDATE sql查询并修改数据库记录。这是一个惊喜,因为我从未使用过.保存方法,我以为我已经将集合从活动记录集合转换为数组
如何在不修改数据库记录的情况下过滤深度嵌套的记录?然后返回过滤结果
1条答案
按热度按时间ws51t4hk1#
使用
=
将示例列表分配给has_many
集合将立即将更改持久化到数据库。相反,我会尝试用更具体的联想来解决这个问题,比如:
有了这些联系,我希望以下做法能够奏效: