繁体   English   中英

选择未嵌套至少一个模型的Rails活动记录范围有很多

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM