ActiveRecord Rails:使用关系中的条件获取记录

泰迪尔特

这是一个示例:用户有很多汽车,汽车属于用户

我想提取所有汽车信息,而不是某些用户的汽车信息(这是因为我想删除我和一些同事以创建正确的统计信息)。

我尝试了这个,但是没有成功:

Car.where("car.user.name != 'john'")

任何的想法?您是否有获取有关关系中条件的记录的一般规则?

谢谢。

BroiSatse

尝试以下方法:

Car.where('user_id != ?', User.find_by_<name?>('john').id

如果您有滑轨4:

Car.where.not(user_id: User.find_by(name: 'john')).id

更新:

上面的解决方案将起作用,因为您具有可以查询的外键。更通用的解决方案是对关联表执行左连接并过滤这些结果。无论关联类型如何(包括has_many:through和has_and_belongs_to_many),以下代码都将起作用:

Car.includes(:user).where('users.name != ?', 'john')

# rails 4

Car.includes(:user).where.not(users: { name: 'john'})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章