【发布时间】:2016-04-19 03:13:46
【问题描述】:
我在用户和对话这两个模型之间有一个 HABTM 关联。
我希望能够查询登录用户的对话 (current_user.conversations),将另一个用户的 id 传递给它,并让它返回一个由两个用户共享的对话(如果存在的话)。
(一个额外的好处是让查询在不存在时创建一个。)
关联工作正常,因此我可以通过@user.conversations 和@conversation.users 等实例变量访问关联的对象,因此我可以走很长的路并遍历每个对话对象并搜索每个对话对象中的用户关联...但是必须有一种有效的方法来构造这个查询。
我想做的是current_user.conversations.where(conversation.users.exists?(id: @user_id)) 或Conversation.find(users: {id: @user_id AND current_user.id}) 之类的东西。
我想这有一个明显的答案,我一直在这里寻找类似的问题,但没有找到任何问题。浏览完 Rails API 文档后,我想我正在寻找的解决方案在某种程度上涉及.includes(),但我无法让它工作。
有什么建议吗?谢谢。
【问题讨论】:
-
你能发布一个关于用户和对话之间模型关系的高级sn-p吗?对话是否对每个用户都有一个外键(例如
sender_id、recipient_id)?
标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord active-relation