Есть много: через, лучший способ сделать это?

Я настроил многопоточную систему сообщений, похожую на Facebook, где у одного пользователя одновременно много разговоров. В каждом из этих разговоров участвует уникальная группа людей, каждый из которых содержит несколько сообщений.

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 с уникальными столбцами или что-то...

Четыре модели для отправки сообщения кажутся слишком многими. Какие-либо предложения? Или это то, о чем мне не стоит беспокоиться?

1 ответ

Взгляните на has_and_belongs_to_many, это может быть способ избавиться от одной из этих моделей.

Другие вопросы по тегам