在Rails应用程序中,使用ActiveRecord和mysql,您可以检查是否已经加载了关联:
class A
belongs_to :b
a = A.find(...
a.b.loaded? # returns whether the associated object has been loaded
mongoid中是否有一个等价物?._loaded?曾经有效,但现在不再有效。
UPDATE -添加示例
class A
include Mongoid::Document
end
class B
include Mongoid::Document
belongs_to :a
end
a = A.new
b = B.new
b.a = a
b.a._loaded?
退货:
ArgumentError (wrong number of arguments (given 0, expected 1))
3条答案
按热度按时间hs1ihplo1#
它是这个类的一个可枚举方法:Mongoid::关系::目标::可枚举
它将返回true和false,如果可枚举对象是否已加载?如果条件已执行或我们手动加载了整个对象,则返回true。
ut6juiuv2#
现在(Mongoid7.0)_loaded?()是一个私有方法,在我的例子中,它总是返回true。
我能找到的最好的是ivar():如果已经加载,则返回该对象;如果没有加载,则返回false。
我不确定这是否是一个可靠的解决方案,它取决于ivar()的进一步可用性和对象作为示例变量存储的方式。
bsxbgnwa3#
您可以测试是否已将includes(:your_association)添加到条件中,如下所示:
例如: