代码之家  ›  专栏  ›  技术社区  ›  pratski

当“朋友”删除他的帐户时,如何从数据库中删除友谊?

  •  0
  • pratski  · 技术社区  · 12 年前

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

     # 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的帐户之后删除与用户A相关的数据。但我希望数据库中属于用户B的另一行也被删除。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Zippie    12 年前

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

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

    你试过了吗?看看两者是否都会被删除?

    如果不是这样(但应该是这样),您可以使用 before_destroy 回调以删除其他记录。

    推荐文章