我使用关系( has_many , belongs_to)
我正在使用上面的源代码,但是当更改关系(error document Not Found
)时,我得到embeds_many, embedded_in
用于删除照片(图片)。请帮助,如何使用mongoid&amp ;; Embed_many relations
我的源代码在这里出了什么问题:
class Room
include Mongoid::Document
field :home_type, type: String
field :room_type, type: String
embeds_many :photos
end
class Photo
include Mongoid::Document
include Mongoid::Paperclip
embedded_in :room
end
class PhotosController < ApplicationController
def destroy
@photo = Photo.find(params[:id])
room = @photo.room
@photo.destroy
@photos = Photo.where(room_id: room.id)
respond_to :js
end
end
答案 0 :(得分:1)
这里的简单答案是,当您嵌入文档时,您将该文档添加到另一个文档中。为了让mongodb找到嵌入的文档,首先需要找到父文件。在上一次迭代中,您使用has_many关联来自不同集合的两个文档,使您可以通过关联文档进行查找。
因此,尽管嵌入式文档具有_id,但您只能从文档中查找它们。如果你要输出@photo,你会发现它是零。我很惊讶你的第二行房间= @ photo.room没有返回错误没有nil的方法:NilClass。
要做你想做的事,你首先需要找到你可以做的文件而不需要太多改变:
class PhotosController < ApplicationController
def destroy
room = Room.find_by('photo._id': BSON::ObjectId(params[:id]))
@photo = room.photos.find(params[:id])
@photo.destroy
@photos = room.photos
respond_to :js
end
end