我希望能够轻松访问current_users对话。 E.G。
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”一样?
亲切的问候
答案 0 :(得分:1)
我不相信有一种方法可以完全你想要什么,但是你可能需要考虑一些替代方法:
1)将它拆分为两个关系,sent_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