Есть много: через, лучший способ сделать это?
Я настроил многопоточную систему сообщений, похожую на 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, это может быть способ избавиться от одной из этих моделей.