0

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

基本上我设想这项工作的方式是我的消息表中有一个名为 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。

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

谢谢!

4

1 回答 1

1

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

class Thread < ActiveRecord::Base
  has_many :messages
end

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

此方法还允许您跟踪有关线程的信息,例如通过“created_at”列创建线程的时间,如果您对此感兴趣的话。

于 2012-09-25T19:28:02.747 回答