2016-04-03 31 views
1

ile Gömülü belgelerin silinmesi ve yok edilmesi İlişkiler (has_many , belongs_to) tha ile ilgili kaynak kodunu yukarıdaki bağlantıda kullanıyorum, ancak ilişkiyi değiştirirken (resim) error document Not Found'u siliyorum (embeds_many, embedded_in). Herkes HelpMe, nasıl burada yanlış benim kaynak kodunu ne mongoid & kullanılarak Embed_many relations kullanmak edin:Rails 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 

cevap

1

burada basit bir cevabı olduğunu size başka biri içinde bu belgeyi ekliyoruz bir belge katıştırdığınızda. Mongodb'un gömülü belgeyi bulması için öncelikle ebeveyni bulması gerekir. Önceki yinelemenizde, has_many ile birlikte, iki belgeyi farklı koleksiyonlardan ilişkilendiriyorsunuz, böylece ilgili belgeyi arayabiliyorsunuz. Bu nedenle, katıştırılmış belgelerin bir _id'i olsa da, bunları yalnızca belgenin içinden görebilmeniz mümkündür. Eğer @photo çıktıysanız, bunun sıfır olduğunu görürsünüz. İkinci satırdaki odanızın = @ photo.room'unun nil için bir yöntem döndürmediğine şaşırdım: 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 
:

istediğini yapmak için, öncelikle çok fazla değişiklik olmadan yapabileceğini belge, bulmalıyız