Документы 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

Условия where определенно возвращают правильные объекты.

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

Обновление:

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

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

person Ben    schedule 19.08.2013    source источник


Ответы (1)


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

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

 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
person Yudho Ahmad Diponegoro    schedule 25.08.2013