具有STI的范围超慢的has_many

时间:2016-02-13 08:02:36

标签: ruby-on-rails rails-activerecord active-model-serializers

class User < ApplicationRecord
  has_many :buckets, -> { order(ranked_row: :asc) }
  delegate :incomes, :fixed_costs, :financial_goals, to: :buckets

  ...
end

我有铲斗,这是STI的。如果我将该范围添加到has_many,我的页面将永远记录9条记录,并且似乎正在加载应该缓存的内容

74s...

如果删除范围,一切都很好

3s...

知道has_many的范围如何影响STI? ranking_row有一个索引,但无论如何都是一样的。我正在使用active_model_serializers,但我不确定是否存在相关性。

更新

绝对是active_model_serializers的东西。 ActiveModel::SerializableResource.new(user)在控制器中,并且在控制台中陷入困境。我删除了序列化程序中的所有内容,并调用了作用域has_many。我会点击github。

代码

https://gist.github.com/dudo/f25767f00c874842a005

这是我可以解决问题的最小代码。同样,它在没有has_many范围的情况下工作正常,它也适用于从Bucket中删除percent_complete方法...该方法看起来不太讨厌。什么可能在included_transactions方法中,当范围存在时将其带入爬行?

1 个答案:

答案 0 :(得分:1)