0

メールボクサーを使用すると、gem ページの例のように複数のモデルを接続できます。Mailboxer Github ページ

Mailboxer は他のどのモデルでも使用でき、いくつかの異なるモデルでも使用できます。アプリケーションにダックとサイロンがあり、それらが同じであるかのようにメッセージを交換したい場合は、acts_as_messageable をそれぞれに追加するだけで、ダック-ダック、ダ​​ック-サイロン、サイロン-ダック、サイロン-サイロンを送信できます。メッセージ。

ダックサイロンとその逆の間だけにメッセージを制限するにはどうすればよいでしょうか? では、会話を開始できるのはアヒルだけで、サイロンは応答できますか? そして、ダック・ダックやサイロン・サイロンの会話は不可能ですか?

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

次に、アプリで and を使用send_message_filteredreply_to_sender_filteredます。これは、必要に応じてより洗練されたものになる可能性があります... Cylon がメッセージを開始しようとしたり、Duck が応答しようとした場合に、おそらく例外を発生させます。

于 2014-06-30T08:40:18.217 に答える