ruby-on-rails Mongoid等效于ActiveRecord的“collection?”关系方法

gijlo24d  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(129)

我正在使用Mongoid,并尝试执行类似于ActiveRecord的collection?方法的操作。
我有一个从类中获取关系的方法,比如:

def relations
  object.class.relations
end

这将生成关系对象的哈希。
然后用另一种方法我这样做:

if relations[key].collection?
   do stuff...
else
   do something else...
end

collection?不是ActiveRecord中的方法。

undefined method `collection?' for #<Mongoid::Association::Referenced::BelongsTo:0x00007feed3b61240>

Mongoid做这种条件的方式是什么?

ekqde3dh

ekqde3dh1#

我假设您正在谈论的方法是这个方法,它似乎只是在has_many和HABTM关联上返回true ...从8.0开始,我们有many?方法来检查它是否是HasMany或EmbedsMany,但我认为这不是您所需要的。我现在可以建议一个方法,我将打开一个票证,看看我们是否可以添加此方法:

def collection?(association)
  [
    Mongoid::Association::Referenced::HasMany, 
    Mongoid::Association::Referenced::HasAndBelongsToMany
  ].any? { |r| association.is_a?(r) }
end

编辑:您可以跟踪此问题here

相关问题