我试图过滤掉一些包含模型的结果。
我有3个班级:
ALTER PROCEDURE [dbo].[test1]
@proc2 varchar(20)
AS
Begin
select * from tab where name=@proc2
END
现在,我尝试使用ActiveRecord在一个查询中获取所有产品及其相关图像,他们的图像的布尔字段设置为false:
Platform (has many Products, has many ProductImages through Product)
Product (has many ProductImages)
ProductImage
上述问题的问题在于它过滤掉了没有任何带有dont_use的product_images的产品:true这不是我的目标。
我尝试使用相关图片获取所有产品,但只是使用dont_use过滤掉图片:false。
有关如何更改查询以满足我的需求的任何想法?
答案 0 :(得分:1)
添加任何条件都将修改定义返回哪些产品的整体查询,而不是指定包含哪些图像。
您可以添加与您需要的条件的其他关联,并将其包括在内。例如:
class Product < Active record::Base
has_many :images_in_use, -> { where(dont_use: false) }, class_name: ProductImage
end
platform.products.includes(:images_in_use)
答案 1 :(得分:-1)
我认为你有错误的where
条款。
platform.products
.includes(:product_images)
.where('product_images.id is NULL OR product_images.dont_use = ?', true)