Rails 4 mailboxer会话删除参与者



我曾经使用mailboxer gem来处理rails中的消息。我想从对话中删除一个参与者。如何删除它?谁都可以告诉我。

如果你还在寻找答案,我刚刚遇到了同样的问题,发现了一些有趣的事情。

在我的场景中,我有一组用户,他们共享一个共同的对话。因此,团队对象持有一个conversatoin_id。每次创建团队或有人加入团队时,都会创建一个新的对话,或者使用add_participant(user)函数将该新人添加到现有的对话中。

我遇到了这个问题,因为我的用户现在需要能够离开一个团队,这意味着他们被排除在team_conversation之外。

查看Mailboxer Gem的源代码,可以看到add_participant(user)函数实际上为会话中创建的每条消息创建了一个新的收据,并使用来自add_participant(user)调用的用户作为接收者。

因此,为了扭转这一点,从而从对话中删除某人,您可以执行

@user_receipts = @conversation.receipts_for(user)
@user_receipts.destroy_all

这对我来说很好。然而,要小心。由于这将删除该用户在给定对话中的所有收据,因此如果您希望查看该用户在对话中写了什么,则必须找到另一个仍然处于活动状态的用户,并且该用户在离开的用户处于活动状态时处于活动状态。不管怎样,我希望它能解决你的问题,如果你还有任何问题,请告诉我。D

您可以尝试opt_out(participant)。它将参与者从对话中移除。这对我很有效。

来源

@conversation.opt_out(@user)

最新更新