Mailboxer允许您连接多个模型,如gem页面中的示例所示。 Mailboxer Github page
您可以在任何其他模型中使用Mailboxer,并在多个不同的模型中使用它。如果您的应用程序中有鸭子和圆形,并且您想要将消息交换为相同的消息,只需将act_as_messageable添加到每个消息中,您就可以发送鸭子鸭子,鸭子鸭子,圆形鸭子和圆筒子。消息。
我们如何才能将消息传递限制在duck-cylon之间,反之亦然?那么,只有鸭子可以发起对话而圆筒可以回复吗?并且,没有鸭鸭和圆筒式对话可能吗?
答案 0 :(得分: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_filtered
和reply_to_sender_filtered
。如果您需要它,这可能会更复杂......如果Cylon尝试发起消息或者Duck尝试回复,可能会引发异常。