在多重关系中,我们如何使用或条件

我试图运行一个查询,以获得一个用户是所有者或成员的任何项目的信息,一个项目可以有一个用户作为所有者( belongs_to)或许多用户作为成员(has_and_belongs_to_many)。一个项目可以有一个用户作为所有者( belongs_to),也可以有很多用户作为成员(has_and_belongs_to_many)。

下面的内容不会出错,但却不能正常工作。

Project.joins(:members).where(user: current_user).or(Project.joins(:members).where(:users  => { :id => current_user.id })).order('updated_at DESC')

下面给出的是 ArgumentError Exception: Relation passed to #or must be structurally compatible. Incompatible values: [:joins] 错误。

Project.joins(:user).where(user: current_user).or(Project.joins(:members).where(:users  => { :id => current_user.id }))

解决方案:

你可能需要使用多个查询,这些查询包括 or 语句可能有些棘手。也许像这样。

ids1 = Project.where(user_id: current_user.id).ids
ids2 = Project.joins(:members).where(users: { id: current_user.id }).ids

Project.where(id: [ids1, ids2].flatten)

给TA打赏
共{{data.count}}人
人已打赏
未分类

客户端调用EJB错误:javax.naming.NoInitialContextException。

2022-9-10 6:58:44

未分类

如何在CSS中对JFoenix for JavaFX Scene Builder节点和类进行风格化?

2022-9-10 6:58:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索