Итак, у меня есть таблица дружбы, которая выглядит следующим образом:
create_table "friendships", :force => true do |t|
t.integer "user_id"
t.integer "friend_id"
t.integer "status"
end
Для каждой созданной дружбы вставляются две строки, с обратными user_id и friend_id.Когда пользователь удален, дружба также должна быть удалена.Этот код удаляет один из них:
has_many :friendships, :dependent => :destroy
Но это удаляет только одну из дружеских отношений.В моей модели дружбы у меня есть этот код:
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
У меня также есть собственный метод для удаления дружеских отношений, который создает транзакцию, которая вызывает уничтожение на обоих связанных объектах.
Мое решение будетпереопределить метод destroy в User, перебрать все его дружеские отношения и вызвать мой метод remove для них.Это работает, но это элегантное решение?Я чувствую, что может быть хороший Rails-способ сделать это.
Спасибо.