Rails 4:内部消息传递系统

时间:2013-08-20 13:51:57

标签: ruby-on-rails messaging

我正在尝试为注册用户编写一个简单的邮件系统。我意识到这里有宝石,但我试图推动自己更简单的宝石。

我按如下方式设置了我的模型:

class Conversation < ActiveRecord::Base
  has_many :messages, dependent: :destroy
  belongs_to :sender, class_name: "User"
  belongs_to :receiver, class_name: "User"
  validates_presence_of :sender_id, :receiver_id
end

class Message < ActiveRecord::Base
  belongs_to :conversation
end

class User < ActiveRecord::Base
  has_many :conversations, foreign_key: "sender_id"
  has_many :recipients, through: :conversations, source: :receiver
end

我已设置路线和控制器,以便我可以进行新的对话,并向这些对话添加消息。但是,我试图找出如何制作它,以便只有登录用户才能与其他用户开始对话。没有其他用户应该能够访问该对话。

这是一个权限(cancan)还是应该由某些控制器逻辑定义?

谢谢!

1 个答案:

答案 0 :(得分:2)

这应该在控制器逻辑中定义,以便只有正在进行交谈的用户才能访问它们之间的对话。两个用户信息(主要是用户ID)应与对话一起存储,以便可以应用限制。