Rails:如何存储聊天对话

时间:2013-12-07 13:45:34

标签: ruby-on-rails

我正在编写一个rails应用程序,其中包含客户端和管理员之间的对话。我希望管理员回复客户发送的问题。

管理员应该能够通过回复框查看以前的对话。

保存这些封面的最佳方法是什么:

  • 带有问题和答案标记的单一表格,并将其视为表格条目?
  • 不同的表格,只是按时间组织它们?

1 个答案:

答案 0 :(得分:0)

class Administrator < ActiveRecord::Base
  has_many :messages, as: :author
end

class Client < ActiveRecord::Base
  has_many :messages, as: :author
end

class Message < ActiveRecord::Base
  belongs_to :author, polymorphic: true
  belongs_to :chat
end

class Chat < ActiveRecord::Base
  has_many :messages
  belongs_to :client
  belongs_to :administrator
end

如果您想显示特定聊天的消息,可以这样做:

@chat = Chat.find_by_client_id_and_administrator_id(client_id, administrator_id)
@messages = @chat.messages.order(:created_at)

如果clientadministrator属于同一模型,例如User,则:

class User < ActiveRecord::Base
  has_many :messages
end

class Message < ActiveRecord::Base
  belongs_to :user
  belongs_to :chat
end

class Chat < ActiveRecord::Base
  has_many :messages
  belongs_to :client, class_name: "User"
  belongs_to :administrator, class_name: "User"
end