gpt4 book ai didi

ruby-on-rails - 从延迟加载的模型中获取事件记录关系

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

我知道 ActiveRecord 有延迟加载的查询,您可以在其中向现有查询添加过滤器,并在最后调用查询。

示例:模型.where(filter1: true).where.not(filter2: true).....

在我的代码中,我有一个条件,如果它应该被切片,则向查询添加一个切片过滤器,如果它不被切片,则使用另一个模型。代码如下:

def base_query
@base_query ||= slice? ? slice_class.where(slice_value: @slice.value, slice_type: @slice.type) : hour_class
end

问题是这会产生不一致的返回类型。如果事物被切片,则为 ActiveRecord 关系,否则返回 ActiveRecord 模型。

如果我在 hour_class 末尾添加 .all 它将变得一致,但此时它会命中 DB。如何在不丢失延迟加载的情况下保持一致?

我在 Rails 5.0.3 和 ActiveRecord 5.0.6 上

最佳答案

您可以使用 hour_class.default_scoped。如果您想忽略任何默认范围,您可以使用 hour_class.unscoped

关于ruby-on-rails - 从延迟加载的模型中获取事件记录关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581850/

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