Как узнать, когда модель автоматически удаляется с помощью a: зависимый =>: уничтожить в рельсах? - PullRequest
5 голосов
/ 20 марта 2012

У меня есть следующая ассоциация:

class Parent < ActiveRecord::Base
  has_many :children, :dependent => :destroy
  before_destroy :do_some_stuff
end

class Child < ActiveRecord::Base
  belongs_to :parent
  before_destroy :do_other_stuff
end

Я хотел бы знать в do_other_stuff, было ли уничтожение вызвано зависимым => уничтожить или нет, потому что часть этого будет / будет сделана в do_some_stuff

Я пытался parent.destroyed?, parent.marked_for_destruction?, parent.frozen?, но ничего не работает: /

есть идеи?

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Вы можете использовать обратные вызовы ассоциации (before_remove или after_remove)

class Parent < ActiveRecord::Base
  has_many :children, :dependent => :destroy, :before_remove => :do_foo

  before_destroy :do_bar

  def do_bar
  end

  def do_foo
  end
end
0 голосов
/ 20 марта 2012

Может быть что-то в этом роде:

class Parent < ActiveRecord::Base
    has_many :children
    before_destroy :some_stuff
    def some_stuff
        children.each do |child|
            child.parent_say_bye
        end
    end
end

class Child < ActiveRecord::Base
    belongs_to :parent
    before_destroy :do_other_stuff
    def parent_say_bye
        #do some stuff
        delete
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...