gpt4 book ai didi

ruby-on-rails - 检查关联是否存在

转载 作者:行者123 更新时间:2023-12-05 02:23:33 25 4
gpt4 key购买 nike

我有一个像这样的用户模型:

has_one :car

和汽车模型:

belongs_to :user

如何查看哪些用户没有汽车?

最佳答案

你可以这样写一个查询:

User.includes(:car).where(cars: {user_id: nil})

我建议将其提取到一个范围内:

class User < ActiveRecord::Base
# ...

def self.without_car
includes(:car).where(cars: {user_id: nil})
end
end

然后你可以简单地写

User.without_car

编辑

为了澄清:在幕后,将发出此查询:

SELECT "users"."name" FROM "users"
LEFT OUTER JOIN "cars" ON "cars"."user_id" = "users"."id"
WHERE "cars"."user_id" IS NULL

连接将为 car.user_id 生成一个空行,因此我们可以简单地检查该行是否为 NULL(或者,从 Active Record 的角度来看, ).

顺便说一句,这也适用于 has_many 关系,只需将 includes 的参数也更改为复数即可。请注意,where 的参数始终需要是复数,因为它是表名。

关于ruby-on-rails - 检查关联是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21044979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com