Usunięcie rekordu relacji

Mam taki ‘self referenced’ (nie wiem jak to po polsku napisac) model.
Board moze skladac sie z wielu Source’ów, a Source to też Board.
Ładnie mi to działa, tak jak chcę, tworzy rekord relacji Feed (:board_id, :source_id). Teraz jeżeli usuwam dany Board, to chcę, żeby usunęło wszystkie rekordy Feed z tym board_id, i to mi działa (:feeds, dependent: : destroy).
Chciałbym również aby przy usunięciu danego Boarda usunęło także wszystkie Feedy gdzie ten Board jest Sourcem. Da się to jakoś elegancko zrobić ?

[code=ruby]class Board < ActiveRecord::Base
belongs_to :user
has_many :links, dependent: :destroy
has_many :feeds, dependent: :destroy
has_many :sources, through: :feeds

attr_accessible :description, :name, :user_id

validates :name, presence: true
end

class Feed < ActiveRecord::Base
belongs_to :board
belongs_to :source, class_name: “Board”

attr_accessible :board_id, :source_id

end[/code]

  before_destroy { |record| Feed.destroy_all "board_id = #{record.id}"   }

ok, dzięki
Dwa pytania z ciekawości:

  1. nie lepiej dawać after_destroy, czyli usunąć rekord relacji dopiero jak jesteśmy pewni, że usunęliśmy rekord Board ?
  2. czy to ‘dependent: :destroy’ to tak naprawdę inaczej zapisany taki callback?

Jeżeli najpierw zniszczysz board, to stracisz jego id i nie będziesz w stanie znaleźć powiązanych z nim feedów. Podobnie np. nie można stworzyć relacji przed zapisaniem obiektu w bazie danych.

Jak chcesz się najpierw upewnić się że usunąłeś board, możesz spróbować np. przed zniszczeniem board połączyć wszystkie jego feedy z pewnym id (np. 0), a po zniszczeniu boardu usuwać z bazy wszystkie obiekty z board_id == 0

jeśli nie zależy Ci na odpaleniu callbacków dla kasowanych rekordów, możesz też użyć delete_all, ale nie wiem na ile zalecana jest ta praktyka.