2013-08-19 2 views
0

У меня есть следующие две модели:Mongoid embeds_many документы не удаляются после перезагрузки

class Customer 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    embeds_many :locks, class_name: "Lock" 
    accepts_nested_attributes_for :locks, allow_destroy: true 

    field :name, type: String 


    validates :name, 
    presence: true 

    belongs_to :list 
end 

и

class Lock 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :locked_by, type: Moped::BSON::ObjectId 

    embedded_in :customer, inverse_of: :locks, class_name: "Customer" 

    def unlock! 
    self.destroy 
    end 
end 

Так что, когда я пытаюсь удалить замок замок удален из коллекции детской, но после перезагрузки клиента это еще там:

locks = customer.locks.where({ some conditions}) 

locks.each do |l| 
    l.unlock! 
end 

customer.save 

В тех случаях, когда условия однозначно возвращают правильные объекты.

Может ли кто-нибудь помочь мне и рассказать мне, что я сделал не так?

Update:

Это не работает также

customer.locks = [] 
customer.save 
customer.reload 

ответ

0

Ну, давайте попробуем.

Сначала удалите этот блок

def unlock! 
    self.destroy 
end 

Затем замените

locks = customer.locks.where({ some conditions}) 
locks.each do |l| 
     l.unlock! 
    end 

с

customer.locks.where({ some conditions}).delete_all 

Если все еще не работает, пожалуйста, добавьте еще одну строку после строки выше

customer.locks.save