【问题标题】:A Rails active record scope that selects models that do not have at least one nested has many选择至少没有一个嵌套模型的 Rails 活动记录范围有很多
【发布时间】:2014-12-24 15:22:32
【问题描述】:

我正在与 Spree 合作。在 Spree 中,Product 有很多 Variants,其中有很多 Images

我想向Product 添加一个范围,它只返回在任何变体上都没有至少一张图片的产品。这是为了帮助管理员找到他们需要放置图像的产品。我需要通过 sql 范围与 select 之类的方法来完成此操作,因为范围在进入 ransack search 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;

【问题讨论】:

    标签: sql ruby-on-rails activerecord spree


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      相关资源
      最近更新 更多