在 Rails 中,如果一个模型有两个 has_many 关联,想要从中选择零关联的记录可以使用 ActiveRecord 的 joins 方法和条件查询。
假设有三个模型:User、Post 和 Comment。User 拥有两个 has_many 关联,一个是 posts,一个是 comments。现在想要选择既没有 posts 也没有 comments 的用户。
可以通过以下步骤实现:
class User < ApplicationRecord
has_many :posts
has_many :comments
end
User.joins(:posts, :comments).where(posts: { id: nil }, comments: { id: nil })
上述代码使用 joins 方法连接 posts 和 comments 表,然后使用 where 方法筛选出既没有 posts 也没有 comments 的用户。具体地,posts: { id: nil } 表示过滤掉有 posts 的用户,comments: { id: nil } 表示过滤掉有 comments 的用户。
这样就可以得到既没有 posts 也没有 comments 的用户记录。
关于腾讯云相关产品和产品介绍,可以参考以下链接:
腾讯技术创作特训营第二季第4期
云+社区技术沙龙[第26期]
云+社区技术沙龙[第9期]
云+未来峰会
云+社区技术沙龙[第16期]
停课不停学 腾讯教育在行动第二期
云+社区开发者大会 武汉站
云+社区技术沙龙 [第30期]
“中小企业”在线学堂
Elastic 中国开发者大会
领取专属 10元无门槛券
手把手带您无忧上云