1

我正在尝试混合 2 个教程,但我失败了。我正在尝试创建一个带有railsmongoid的用户和 microposts 系统来学习。我遇到了一个问题,因为用户 id 不再是一个基本数字,而是由 Mongo 处理并创建一个随机 id,我认为代码无法找出用户拥有哪些微博,因为微博认为user_id 是一个整数,而不是 mongo id 的类型。

编辑:更好地解释问题:简而言之:我无法从用户或微博访问用户 ID,所以即使每个用户都有_many 微博,并且每个微博属于_一个用户,它也不起作用,因为它不知道要做什么做,去哪里,谁是谁。

我正在关注本教程: http ://ruby.railstutorial.org/chapters/a-demo-app#top

但是我改变了一些东西,我把它和这个屏幕演员混合在一起以支持 MongoDB: http ://railscasts.com/episodes/238-mongoid

所以,在我正在阅读的部分(2.3.3 A user has_many microposts)中,可以看到每个微博都属于一个用户,一个用户有很多微博。这看起来不错,但是当您继续前往作者使用控制台的位置时,当我这样做时,它会返回一个空白数组。

2.0.0p247:008 > first_user = User.first

MOPED:127.0.0.1:27017 COMMAND 数据库=管理员命令={:ismaster=>1}(0.4084 毫秒)

MOPED: 127.0.0.1:27017 QUERY 数据库=mongo_app_development 集合=用户选择器={"$query"=>{}, "$orderby"=>{:_id=>1}} 标志=[:slave_ok] 限制=-1跳过=0 batch_size=nil 字段=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,我想我依赖它?但我无法从视图或任何其他模型(微博)中访问它。

4

0 回答 0