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

时间:2012-08-25 13:12:39

标签: ruby-on-rails associations has-many-through

我已经设置了一个类似于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 个答案:

答案 0 :(得分:0)

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