2016-04-03 10 views
1

関係を使用しています(has_many , belongs_to)ここでソースコードで作業していますが、関係を変更するときに写真(画像)を削除するにはerror document Not Foundが表示されます(embeds_many, embedded_in)。誰もがHelpme、どのように間違ってここに私のソースコードを何mongoid &を使用してEmbed_many relationsを使用するようにしてください。RongでMongoidの埋め込み文書を削除および破棄する方法4

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 

答えて

1

ここで簡単な答えは、あなたがあなたが別のものの中に、そのドキュメントを追加しているドキュメントを埋め込むとき。 mongodbが埋め込みドキュメントを見つけるためには、最初に親を見つける必要があります。以前の繰り返しでは、has_manyを使用して、異なるコレクションの2つのドキュメントを関連付けることができ、関連するドキュメントを参照することができます。

したがって、埋め込みドキュメントには_idが含まれていますが、ドキュメント内からのみ参照できます。 @photoを出力すると、それがnilだったことがわかります。私はあなたの2番目のラインルーム= @ 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 

はあなたが欲しいものを行うには、まずあなたはあまり変更せずに行うことができ、文書を、見つける必要があります
関連する問題