0

Mailboxer 允许您连接多个模型,如 gem 页面中的示例所示。Mailboxer Github 页面

您可以在任何其他模型中使用 Mailboxer,并在多个不同模型中使用它。如果您的应用程序中有鸭子和 cylon,并且您想像它们一样交换消息,只需将acts_as_messageable 添加到每个中,您就可以发送duck-duck、duck-cylon、cylon-duck 和cylon-cylon消息。

我们如何才能将消息传递限制在鸭赛隆之间,反之亦然?那么,只有鸭子可以发起对话,而赛昂人可以回复吗?而且,没有鸭子和鸭子和赛昂-赛昂的对话是可能的吗?

4

1 回答 1

0

您可以在模型中添加一个模块

class Duck < ActiveRecord::Base
  acts_as_messageable
  include mailboxer_filter
end

class Cylon < ActiveRecord::Base
  acts_as_messageable
  include mailboxer_filter
end

你的模块...

module MalboxerFilter
  def initiator?
    self.class == Duck
  end
  def replyer?
    self.class == Cylon
  end

  def send_message_filtered(beta, body, subject)
    self.send_message(beta, body, subject) if initiator? && beta.replyer?
  end

  def reply_to_sender_filtered(*args)
    self.reply_to_sender(*args) if replyer?
  end
end

然后在您的应用程序中使用send_message_filteredreply_to_sender_filtered。如果您需要,这可能会更复杂......如果 Cylon 尝试启动消息或 Duck 尝试回复,可能会引发异常。

于 2014-06-30T08:40:18.217 回答