从模型定义中获取所有 embeds_many 关系键

get all embeds_many relationship keys from model definition

如何获取模型定义中定义的 embeds_many 关系的所有键?当我执行 Model.attribute_names 时,它只会为我提供文档架构中定义的字段的键。

假设你的模型名称是User,你可以得到所有的embedded_many关系如下:

embeds_many_relations = User.relations.select { |k, v| v.relation == Mongoid::Relations::Embedded::Many }

这个 returns embeds_many 关系的散列。

获取钥匙:

embeds_many_relations.map { |k, _| k }

如果您使用别名存储关联,即 embeds_many :phones, store_as: :phs,那么您可以通过调用以下方式获取数据库密钥:

embeds_many_relations.map { |_, v| v.key }