[英]A Rails active record scope that selects models that do not have at least one nested has many
我正在与Spree合作。 在Spree中, Product
具有多种Variants
,其中具有多种Images
。
我想一个范围内添加到Product
,只有返回不具有任何及其变体的至少一个图像产品。 这是为了帮助管理员找到需要放置图像的产品。 我需要通过sql作用域与select
之类的方法来完成此操作,因为作用域在进入ransack搜索gem之前已应用于集合。
原始SQL可能如下所示:
SELECT DISTINCT * FROM Spree_Products AS P JOIN Spree_Variants AS V ON P.id = V.product_id LEFT JOIN Spree_Assets AS A ON V.id = A.viewable_id WHERE A.id is null;
scope :your_scope, -> do
where("spree_products.id IN (
SELECT product_id FROM spree_variants WHERE (
spree_variants.id NOT IN (
SELECT viewable_id FROM spree_assets
)
)
)")
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.