2
class Actor < ActiveRecord::Base

  has_and_belongs_to_many :movies

  before_destroy :remove_orphaned_initialize
  after_destroy :remove_orphaned


private

  def remove_orphaned_initialize
    @instvariable = self.movies
  end

  def remove_orphaned
    @instvariable.each do |m|
      m.destroy if m.actors.empty? and m.titles.empty?  ##movies also have habtm with Title
    end
  end

end

アクター レコードを削除しても、remove_orphaned で @instvariable が nil であるため、オーファン ムービーは削除されません。

どうすればそれを達成できるか説明していただけますか。

destroy の前に remove_orphaned を呼び出しようとすると、m.actors が空になることはありません。現在のドクター インスタンスがまだ削除されていないためです。

4

1 に答える 1