当一个"朋友"如何从db中删除友谊。删除他的帐户?

时间:2013-04-10 16:39:35

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

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

 # 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的数据库中的另一行。

1 个答案:

答案 0 :(得分:1)

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

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

您是否尝试过检查两者是否都会被删除?

如果情况并非如此(但应该是这种情况),您可以在用户模型中使用before_destroy回调来删除其他记录。