product
有很多uploads
,import
有很多products
。
我希望将所有上传链接到给定导入的产品。
以下是我正在做的事情:
@import = Import.includes(products: [:uploads]).find(params[:id])
@products = @import.products
@uploads= @products.map{|product| product.uploads.where.not(file: nil)}.flatten
但似乎效率很低。 还有其他解决方案吗?
答案 0 :(得分:3)
由于import
有很多products
我认为product
属于import
;如果是这样,您可以尝试查询products
,如下所示:
@uploads = Product.where(import_id: params[:id]).joins(:uploads).where.not(file: nil)
答案 1 :(得分:0)
怎么样:
@import = Import.includes(:products).find(params[:id])
@products = @import.products.pluck(:id)
@uploads = Upload.where(products_id: [@products]).where.not(file: nil)
Pluck避免对每条记录进行实例化并直接从数据库中获取id。这可以节省使用map
迭代器实例化每个产品的时间。