MongoMapper在调用`all`时返回空文档集

时间:2015-08-05 18:12:32

标签: ruby-on-rails mongodb mongomapper

我在mongodb中有一个集合:

> use my_db
switched to db my_db
> db.my_coll.count()
278

我有一个红宝石课:

class MyColl
  include MongoMapper::Document
  key :fst, Integer
  key :sec, Float
end

我打电话的时候:

MongoMapper.database = 'my_db'
MyColl.count
#=> 0

虽然我肯定希望得到与mongo控制台相同的结果。没有错误,没有任何错误。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

MongoMapper' ActiveRecord约定要求类名对应集合名称:

self.class.name.gsub(/::/, '.').underscore.pluralize == coll_name

也就是说,类MyColl期望底层集合被命名为my_colls。尽管数据库中没有这样的集合,MongoMapper默默地假设用户想要透明地创建此集合。这就是MyColl.count返回零的原因,而不是抛出异常。

> db.my_coll.renameCollection("my_colls")

会做到这一点。