所以我有一个如下所示的友谊表:
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 中的 destroy 方法并遍历其所有友谊并在它们上调用我的 remove 方法。这行得通,但它是一个优雅的解决方案吗?我觉得可能有一个不错的 Rails 方式来做到这一点。
谢谢。