Как обеспечить уничтожение строки, удалить связанные внедренные данные в Mongoid? - PullRequest
0 голосов
/ 31 марта 2012

У меня в настоящее время есть следующий файл models / toy.rb в моем проекте RoR:

class ToysPurchased
  include Mongoid::Document

  embedded_in :user, :inverse_of => :toys_purchased
  referenced_in :toy
end

Существует ли команда, аналогичная зависимой от ActiveRecords:: destroy, чтобы гарантировать, что когда я удаляю Toy из приобретенной таблицы Toy (ToysPurchased), то этот внедренный элемент в строке User также удален?

Спасибо

1 Ответ

0 голосов
/ 02 апреля 2012

Нет способа сделать это легко, потому что вы не можете связать свою игрушку с игрушкой ToyPurchases, поскольку ToyPurchases является встроенным документом.Вы можете сделать обратный вызов after_destroy, чтобы выполнить работу

class Toy
  after_destroy :delete_toys_purchased

  def delete_toys_purchased
    User.where('toys_purchased.id', self.toy_purchased_id).each do |u|
      u.toy_purchased.find(self.toy_purchased_id).delete
    end
  end
end
...