我建立了一个类似于 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...
发送消息的四个模型似乎太多了。有什么建议么?或者这是我不应该担心的事情?