0

假设我有以下模型:

class Foo < ActiveRecord::Base
  has_many :bars
end

class Bar < ActiveRecord::Base
  belongs_to :foo
  scope :blue, where(color: 'blue')
end

如果我有一个 的实例Foo,有几种方法可以检索Bar与其关联的所有蓝色模型。我的问题涉及确定bars给定的关系是否foo已经加载。

这将执行数据库查询,而不管柱的完整集合是否已加载到内存中:

foo.bars.blue.all

如果bars加载foo. 如果它们没有被加载,它将加载所有的bars然后枚举。

foo.bars.select { |b| b.color == 'blue' }

如何确定是否已加载关系而不导致它执行查询?

foo.bars.some_method_to_determine_whether_or_not_they_are_in_memory_thanks

有任何想法吗?

编辑:

澄清一下,这是我希望达到的结果:

class Foo < ActiveRecord::Base
  has_many :bars

  def blue_bars
    if bars_already_loaded?
      # enumerate
    else
      # use the scope
    end
  end

  def red_bars
    ...
  end

  ...
end
4

0 回答 0