1

我正在尝试为注册用户编写一个简单的消息传递系统。我意识到有这方面的宝石,但我正在尝试推出我自己更简单的宝石。

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

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)的事情还是应该由某些控制器逻辑定义?

谢谢!

4

1 回答 1

2

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

于 2013-08-20T14:09:52.987 回答