Ruby on rails 有很多:通过,一个更好的方法来做到这一点?

Ruby on rails 有很多:通过,一个更好的方法来做到这一点?,ruby-on-rails,associations,has-many-through,Ruby On Rails,Associations,Has Many Through,我已经建立了一个类似于facebook的线程消息系统,其中一个用户可以同时进行多个对话。每个对话都有一组独特的参与人员,每个对话都包含多条信息 class User < ActiveRecord::Base has_many :involvements has_many :conversations, through: :involvements, unique: true end 我用它工作,但我不能不觉得必须有一些更好,更有效的方法来压缩这个设置,例如使用3个模型。或者可能使

我已经建立了一个类似于facebook的线程消息系统,其中一个用户可以同时进行多个对话。每个对话都有一组独特的参与人员,每个对话都包含多条信息

class User < ActiveRecord::Base
  has_many :involvements
  has_many :conversations, through: :involvements, unique: true
end
我用它工作,但我不能不觉得必须有一些更好,更有效的方法来压缩这个设置,例如使用3个模型。或者可能使用具有唯一列的habtm或其他东西


四个模型发送一条信息似乎太多了。有什么建议吗?或者这是我不应该担心的吗?

看一看,这可能是你摆脱其中一个模型的一种方法。

为什么4个看起来太多了?其中有4条数据:用户、他们在对话中的参与、对话以及这些对话中的信息。您的设置看起来非常合理。
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