我已成功实施了一个友谊模型,在创建友谊时会在数据库中创建两行。
# 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的数据库中的另一行。
答案 0 :(得分:1)
首先,为什么要创建两条记录?这不是那么有效而且是多余的,一个记录就足够了。 在这里查看一个很棒的指南:http://railscasts.com/episodes/163-self-referential-association
无论如何,即使在这种情况下它也应该删除两个友谊记录,因为友谊模型的两个id都与两个记录中的用户绑定了两次belongs_to
,我想。
您是否尝试过检查两者是否都会被删除?
如果情况并非如此(但应该是这种情况),您可以在用户模型中使用before_destroy
回调来删除其他记录。