2012-09-25 47 views
0

我期望這是一個相當普遍的問題,因爲很多網站使用線程消息,但我一直沒有找到任何東西在互聯網上。對於線程消息傳遞,不確定如何生成唯一的thread_id只有當沒有指定thread_id

基本上我設想這項工作的方式是我的消息表中有一個名爲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.

這可能嗎?如果不是,大多數人如何完成線程消息?

謝謝!

+0

我說實話,我並不真正瞭解你想要完成什麼,但是如果你只需要一個遞增值,那麼我就可以使用一個音序器......這就是他們的目標。再次,可能是一個愚蠢的建議,但它聽起來像你想要的。 –

回答

1

有一兩件事你可以做的是創建一個包裝模式:

class Thread < ActiveRecord::Base 
    has_many :messages 
end 

充當郵件的父。這樣,如果您知道要向您添加消息的線程可以撥打@thread.messages.create!(params[:message])。如果想要將消息添加到新線程,則可以創建一個新線程並以相同方式添加消息。您不必擔心將遞增的thread_id分配給消息,因爲線程模型會自動自動遞增新線程的ID並將其分配給消息。

此方法還允許您跟蹤有關線程的信息,例如線程是通過創建「created_at」列創建的,如果這對您感興趣的話。

相關問題