使用Mongoid和Rails从Mongo数组中删除项目

时间:2013-09-30 20:46:40

标签: ruby-on-rails mongodb mongoid

我有一个嵌入式文档,其中包含一系列贡献者。贡献者是一系列为文档做出贡献的用户ID。

field :contributors, type: Array, :default => []

以下是控制台中的示例项目:

#<Item _id: 5249d5bd06387b91a600000f, name: "Collapse", contributors: ["51db6d58bd02861e96000004", "51db6d58bd02861e96000004"], count: 2>

我希望能够从数组中删除项目中第一个匹配的贡献者,但每次我尝试测试只是为了查看用户的id是否存在于contributors数组中时,它会在显然存在时返回false。

以下是一个例子:

contributors.include?("51db6d58bd02861e96000004")
 => false 

如何使用Mongoid的数组值?为什么这会返回假?

1 个答案:

答案 0 :(得分:2)

contributor是一个字符串数组还是ObjectIds?

尝试改为:

contributors.include?( Moped::BSON::ObjectId.from_string "51db6d58bd02861e96000004")

我真的不知道你的整个申请。但你考虑过这种方法吗?

class Item
 has_and_belongs_to_many :users, foreign_key: :contributors
end