0

我已经成功实现了一个友谊模型,它在创建友谊时会在数据库中创建两行。

 # Accept a friend request.
  def self.accept(customer, friend)
    transaction do
      accepted_at = Time.now
      accept_one_side(customer, friend, accepted_at)
      accept_one_side(friend, customer, accepted_at)
    end
  end

  # Update the db with one side of an accepted friendship request.
  def self.accept_one_side(customer, friend, accepted_at)
    request = find_by_customer_id_and_friend_id(customer, friend)
    request.status = 'accepted'
    request.accepted_at = accepted_at
    request.save!
  end

现在当用户 A 删除他的帐户时,我如何确保数据库中的整个友谊(两行)也被删除。我相信dependent: destroy只有在删除他的帐户后才会删除与用户 A 相关的数据。但我也希望删除属于用户 B 的数据库中的另一行。

4

1 回答 1

1

首先,为什么要创建两条记录?这不是那么有效而且是多余的,一条记录就足够了。在这里查看一个很棒的指南:http ://railscasts.com/episodes/163-self-referential-association

belongs_to无论如何,即使在这种情况下,它也应该删除两个友谊记录,因为我想,您的 Friendship 模型的两个 id 在两个记录中都与一个用户绑定了两次。

您是否尝试过两者都将被删除?

如果不是这种情况(但应该是这种情况),您可以before_destroy在 User 模型中使用回调来删除另一条记录。

于 2013-04-10T16:52:25.027 回答