1

我希望能够轻松访问 current_users 对话。例如

current_user.conversations

问题是当前用户可以是发件人或收件人(sender_id 或 recipient_id)

class User < ActiveRecord::Base

  has_many :conversations, :foreign_key => "sender_id"

这可行,但有时发件人是收件人,或者说例如某人作为发件人向某人发送了 10 条消息,而收件人没有回复任何消息,但数据库中仍然存在他们的对话。

如果我以该用户身份登录并键入 current_user.conversations,则不会出现任何内容,因为用户模型中指定的外键是 sender_id。没有办法同时指定两者吗?喜欢在 sql 中使用“OR”吗?

亲切的问候

4

1 回答 1

1

我不相信有一种方法可以完全按照您的意愿行事,但是您可能需要考虑一些替代方法:

1)将其拆分为两个关系,send_conversations 和 received_conversations,然后您可以定义一个组合它们的方法。

2) 添加一个新的类方法来执行一些自定义 SQL:

class User < ActiveRecord::Base
  def conversations
    Conversation.where("sender_id = :id OR receiver_id = :id", id: self.id)
  end
end
于 2013-02-03T23:36:18.397 回答