这是一个示例:用户有很多汽车,而汽车属于用户。
我想提取所有汽车信息,而不是某些用户的汽车信息(这是因为我想删除我和一些同事以创建正确的统计信息)。
我尝试了这个,但是没有成功:
Car.where("car.user.name != 'john'")
任何的想法?您是否有获取有关关系中条件的记录的一般规则?
谢谢。
尝试以下方法:
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] 删除。
我来说两句