【问题标题】:Rails 4 mailboxer conversation delete a participantRails 4邮箱对话删除参与者
【发布时间】:2015-09-01 14:32:11
【问题描述】:
我曾经在 rails 中使用邮箱 gem 来获取消息。我想从对话中删除参与者。如何删除它?任何人都可以告诉我。
【问题讨论】:
标签:
ruby-on-rails-4
mailboxer
【解决方案1】:
如果您仍在寻找答案,我刚刚遇到了同样的问题并发现了一些有趣的东西。
在我的场景中,我有一组用户,他们共享一个共同的对话。因此,团队对象拥有一个 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
【解决方案2】:
你可以试试 opt_out(participant)。它将参与者从对话中删除。这对我有用。
这里是source
@conversation.opt_out(@user)