繁体   English   中英

如何在使用Rails的Ruby中的模型中指定2个外键?

[英]How do I specify 2 foreign keys in a model in ruby on rails?

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

current_user.conversations

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

class User < ActiveRecord::Base

  has_many :conversations, :foreign_key => "sender_id"

这是可行的,但有时发件人是收件人,或者说某人以某人的身份发了10条消息,而收件人没有回复任何邮件,但数据库中仍然存在针对他们的对话。

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

亲切的问候

我不相信有什么方法可以完全满足您的需求,但是您可能需要考虑以下几种替代方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM