【问题标题】:MongoMapper belongs_to relation returns nilMongoMapper belongs_to 关系返回 nil
【发布时间】:2014-02-04 08:27:37
【问题描述】:

我有以下 MongoMapper 模型:

class Album
  include MongoMapper::Document
  key :name, String
  timestamps!

  many :photos
end


class Photo
  include MongoMapper::Document
  key :caption, String
  timestamps!

  key :album_id, ObjectId
  belongs_to :album
end

我正在创建相册和照片对象的实例,如下所示:

album = Album.create!(name: "NYE 2013")
photo = Photo.create!(caption: "Happy New Year!", album: album)

之后,当我执行photo.album == album 时,只要我没有重新加载照片对象,它就会返回true。但是,只要我通过 photo.reload 或稍后重新加载数据库中的照片对象,photo.album 就会返回 nil

在任何时候,album.photos 确实包含上述​​照片对象,这让我感到困惑。

我有什么遗漏或做错了吗?像往常一样,感谢所有帮助!

【问题讨论】:

    标签: ruby mongodb mongomapper


    【解决方案1】:

    确保您的环境设置正确并加载了正确的 gem...

    我正在使用

    gem 'mongo_mapper', :git => "git://github.com/mongomapper/mongomapper.git", :tag => "v0.13.0.beta2"
    

    所以我启动了mmconsole 并在上面添加了您的类定义,然后执行了您的两个文档创建行。从字面上剪切并粘贴它......一切都按预期工作:

    2.0.0-p247 :016 > album = Album.create!(name: "NYE 2013")
     => #<Album _id: BSON::ObjectId('5321213766e76cf398000001'), created_at: 2014-03-13 03:08:39 UTC, name: "NYE 2013", updated_at: 2014-03-13 03:08:39 UTC> 
    2.0.0-p247 :017 > Album.count
     => 1 
    2.0.0-p247 :018 > photo = Photo.create!(caption: "Happy New Year!", album: album)
     => #<Photo _id: BSON::ObjectId('5321214966e76cf398000002'), album_id: BSON::ObjectId('5321213766e76cf398000001'), caption: "Happy New Year!", created_at: 2014-03-13 03:08:57 UTC, updated_at: 2014-03-13 03:08:57 UTC> 
    2.0.0-p247 :019 > Photo.count
     => 1 
    2.0.0-p247 :020 > photo.album.name
     => "NYE 2013" 
    2.0.0-p247 :021 > photo.inspect
     => "#<Photo _id: BSON::ObjectId('5321214966e76cf398000002'), album_id: BSON::ObjectId('5321213766e76cf398000001'), caption: \"Happy New Year!\", created_at: 2014-03-13 03:08:57 UTC, updated_at: 2014-03-13 03:08:57 UTC>" 
    2.0.0-p247 :022 > foto=Photo.first
     => #<Photo _id: BSON::ObjectId('5321214966e76cf398000002'), album_id: BSON::ObjectId('5321213766e76cf398000001'), caption: "Happy New Year!", created_at: 2014-03-13 03:08:57 UTC, updated_at: 2014-03-13 03:08:57 UTC> 
    2.0.0-p247 :023 > foto.album.name
     => "NYE 2013" 
    

    这应该可以帮助您调试...

    这个较旧的 github mongo_examples 项目展示了一些实现关联的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多