gpt4 book ai didi

ruby-on-rails - 使用偏执狂的默认范围急切加载已删除的记录

转载 作者:行者123 更新时间:2023-12-04 06:14:32 26 4
gpt4 key购买 nike

我正在使用 paranoia gem 来“软删除”记录。现在我需要急切加载这些记录,其中一些可能已被删除,用于关联模型。偏执狂添加此 default_scope到“偏执”模型:

default_scope :conditions => { :deleted_at => nil }

所以实际上,我有这些(简化的)模型:
class Product
has_many :orders
default_scope :conditions => { :deleted_at => nil }
end

class Order
belongs_to :product
end

我想要实现的是在访问订单时预先加载产品:
Order.includes(:product)

这(来自 How to use unscoped on associated relations in Rails3? )在这里不起作用:
Product.unscoped { Order.includes(:product) }

我知道我可以创建一个自定义 belongs_to添加条件的关系(如 Eager loading nested association and scope ),但如果可能的话,我找不到删除现有条件的方法。

问题:如何防止将默认范围应用于预先加载查询?

最佳答案

好吧,事实证明解决方法是强制加入“偏执”模型,从而绕过 default_scope :

Order.joins(:product).includes(:product)

不漂亮,但它有效。如果可能,希望得到更好的答案。

关于ruby-on-rails - 使用偏执狂的默认范围急切加载已删除的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335726/

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