得到了一个模型,是懒加载一个ActiveRecord关系

问题描述 投票:1回答:1

我知道的ActiveRecord具有延迟加载查询,您可以添加过滤器,以已有的查询和查询称为底。

例如:Model.where(过滤器1:真).where.not(过滤器2:真).....

在我的代码,我有一个条件,增加了一个切片过滤器,以查询是否应该被切片,以其他的模式,如果它不是切片。代码如下:

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

问题是,这产生了不一致的返回类型。一个ActiveRecord关系,如果事情是切片否则返回ActiveRecord模型。

如果我在.all的末尾添加hour_class它将成为一致的,但它会打击DB在这一点上。如何让我不失懒加载此一致?

我on Rails的5.0.3和5.0.6的ActiveRecord

ruby-on-rails ruby activerecord rails-activerecord
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.