1

Facebook に似たスレッド化されたメッセージ システムをセットアップしました。このシステムでは、1 人のユーザーが同時に多くの会話を行っています。これらの会話にはそれぞれ、関係者の固有のグループがあり、それぞれに複数のメッセージが含まれています。

class User < ActiveRecord::Base
  has_many :involvements
  has_many :conversations, through: :involvements, unique: true
end

class Involvement < ActiveRecord::Base
  belongs_to :user
  belongs_to :involvable, polymorphic: true
end

class Conversation < ActiveRecord::Base
  has_many :involvements, as: :involvable
  has_many :participants, through: :involved, class_name: "User", unique: true
  has_many :messages
end

class Message < ActiveRecord::Base
  belongs_to :conversation
end

これで動作しましたが、このセットアップを凝縮するためのより良い、より効率的な方法が必要であると感じずにはいられません。たとえば、3 つのモデルを使用します。または、一意の列などでhabtmを使用するかもしれません...

メッセージを送信するための 4 つのモデルは多すぎるように思えます。助言がありますか?それとも、これは私が心配する必要のないものですか?

4

1 に答える 1

0

has_and_belongs_to_manyを見てください。これらのモデルの 1 つを取り除くことができる方法かもしれません。

于 2012-08-25T14:04:00.610 に答える