具有多对多或其他参数的 ActiveRecord 查询

发布于 2024-10-29 06:42:12 字数 361 浏览 5 评论 0原文

我有 2 个模型

  • 项目(带有布尔列“隐藏”)
  • 模型,

两者都具有多对多关系,因此我添加了带有projects_users 表的迁移,并使用更改了模型

has_and_belongs_to_many :users
# and
has_and_belongs_to_many :projects

现在我想做以下查询:

选择所有项目其中 hide 为 false 或“current_user”(变量)属于项目

Project.where("hidden = ?", false) 和 当前用户.项目 作品。但如何将它们组合成一个查询呢?

I got 2 Models

  • Projects (with a boolean column "hidden")
  • Models

the both have a many to many relationship, so i added a migration with a projects_users table and changed the models using

has_and_belongs_to_many :users
# and
has_and_belongs_to_many :projects

Now i want to do the following query:

Select all Projects where hidden is false OR "current_user" (a variable) belongs to project

Project.where("hidden = ?", false)
and
current_user.projects
works. But how to combine them into one query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遥远的她 2024-11-05 06:42:12
Project.joins("projects_users").where("hidden = ? OR projects_users.user_id = ?", false, current_user.id).group("projects.id")
Project.joins("projects_users").where("hidden = ? OR projects_users.user_id = ?", false, current_user.id).group("projects.id")
简单气质女生网名 2024-11-05 06:42:12

您所要做的就是为它们创建一个范围。然后您可以使用 Rails 控制台窗口测试它们

All you have to do is create a scope for both of them. Then you can test them with your rails console window

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文