假设我有以下模型:
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