我正在尝试混合2个教程,而我却失败了。我正在尝试使用 rails 和 mongoid 创建用户和微博系统进行学习。我遇到了一个问题,因为用户ID不再是基本号码,而是由Mongo处理并且它创建了一个随机ID,我认为代码无法找出用户拥有的微博,因为微博认为user_id是一个Integer,而不是mongo id的类型。
编辑:更好地解释问题:简而言之:我无法从用户或微博中访问用户ID,因此即使每个用户都有多个微博,并且每个微博属于一个用户,它也不起作用,因为它没有想知道该做什么,去哪里,谁是谁。我正在关注本教程: http://ruby.railstutorial.org/chapters/a-demo-app#top
但是我改变了一些东西,我把它与这个用于MongoDB支持的屏幕转换混合: http://railscasts.com/episodes/238-mongoid
因此,在我正在阅读的部分(2.3.3用户拥有多个微博)中,您可以看到每个Micropost属于一个用户,并且用户有许多微博。这看起来很好,但是当你继续去作者使用控制台的地方时,当我这样做时,它会返回一个空白数组。
2.0.0p247:008> first_user = User.first
MOPED:127.0.0.1:27017 COMMAND database = admin command = {:ismaster => 1}(0.4084ms)
MOPED:127.0.0.1:27017 QUERY database = mongo_app_development collection = users selector = {“$ query”=> {},“$ orderby”=> {:_ id => 1}} flags = [:slave_ok] limit = -1 skip = 0 batch_size = nil fields = nil(0.2954ms)
用户_id:522e6a7d1d41c86de5000001,姓名:“Namedude name”,电子邮件:“thenamedman@gmail.com”> 2.0.0p247:009> first_user.microposts
MOPED:127.0.0.1:27017 QUERY database = mongo_app_development collection = microposts selector = {“user_id”=>“522e6a7d1d41c86de5000001”} flags = [:slave_ok] limit = 0 skip = 0 batch_size = nil fields = nil(0.3123ms)
=> []
我假设问题是Micropost中的user_id字段是一个整数,并且不与用户一起工作?用户ID被称为_id,看起来像这样:522e6a7d1d41c86de5000001,这只是一个普通的旧字符串吗?并将它改为字符串做任何事情?我的意思是,它怎么知道要找什么?请帮助,我是Ruby的新手,我来自Java(也不是很好)。
编辑:刚试过String和Mongo :: ObjectID
String具有相同的结果,它对如何不知道ObjectID是什么产生了很大的影响。
编辑:现在意识到user_id是什么并不重要,因为mongo拥有它自己的对象ID,我想我依赖它?但是我无法从视图或任何其他模型(微博)中访问它。