对于线程消息传递,不确定如何在未指定thread_id时生成唯一的thread_id

时间:2012-09-25 19:05:25

标签: ruby-on-rails postgresql messaging

我希望这是一个相当普遍的问题,因为许多网站使用线程消息传递,但我无法在互联网上找到任何内容。

基本上我设想这个工作的方式是我在我的消息表中有一个名为thread_id的列。该列不是唯一的,因为很明显很多消息将共享同一个线程。我希望看到的是当我插入新消息时,如果我指定了thread_id,它会按预期使用它,但如果我不这样做,它会通过自动递增最高值来使用下一个可用的thread_id。

所以,如果我有一系列带有线程ID的消息:1,1,2,2,3,2,2,3,3,4,2,5,3,3,3,4然后我插入没有id的行,它将使用id 6。

这可能吗?如果没有,大多数人如何完成线程消息传递?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是创建一个包装器模型:

class Thread < ActiveRecord::Base
  has_many :messages
end

充当邮件的父级。这样,如果您知道要向哪个线程添加消息,则可以调用@thread.messages.create!(params[:message])。如果要将消息添加到新线程,则只需创建新线程并以相同方式添加消息即可。您不必担心为消息分配递增的thread_id,因为Thread模型将自动自动递增新线程的id并将其分配给消息。

此方法还允许您跟踪有关线程的信息,例如通过使用“created_at”列创建线程时,如果您感兴趣的话,那么就是这样。