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の場合、ID6を使用します。

これは可能ですか?そうでない場合、ほとんどの人はどのようにしてスレッド化されたメッセージングを実現しますか?

ありがとう!

4

1 に答える 1

1

できることの 1 つは、ラッパー モデルを作成することです。

class Thread < ActiveRecord::Base
  has_many :messages
end

メッセージの親として機能します。そうすれば、メッセージを追加したいスレッドがわかっている場合は、 を呼び出すだけ@thread.messages.create!(params[:message])です。新しいスレッドにメッセージを追加したい場合は、新しいスレッドを作成して同じ方法でメッセージを追加できます。スレッド モデルは新しいスレッドの ID を自動的にインクリメントしてメッセージに割り当てるため、インクリメントされた thread_id をメッセージに割り当てることを心配する必要はありません。

このメソッドを使用すると、「created_at」列を使用してスレッドがいつ作成されたかなど、スレッドに関する情報を追跡することもできます。

于 2012-09-25T19:28:02.747 に答える