2017-06-16 16 views
0

productは、多くはuploadsimportは多くがproductsです。 私はすべてのアップロードを特定のインポートの製品にリンクしたいと思っています。レコードの配列のhas_many関係を得る最も効率的な方法

@import = Import.includes(products: [:uploads]).find(params[:id]) 
@products = @import.products 
@uploads= @products.map{|product| product.uploads.where.not(file: nil)}.flatten 

をしかし、それはかなり非効率です:ここで

は私がやっているものです。 他に解決策はありますか?

@import = Import.includes(:products).find(params[:id]) 
@products = @import.products.pluck(:id) 
@uploads = Upload.where(products_id: [@products]).where.not(file: nil) 

Pluckの各レコードをinsantiating回避し、データベースから直接IDのグラブ:についてはどのように

+0

あなたのビューのすべての製品とそのアップロードを読み込むか、単にデータを操作する必要がありますか? – bkunzi01

+0

ビュー用のすべての製品とアップロードをロードする必要があります –

答えて

0

。これにより、各製品をmapイテレータでインスタンス化する上で時間を節約することができます。

3

importは多くがproductsであるため、productimportに属しているとします。もしそうなら、あなたはこのように、productsを照会しようとすることができます:

@uploads = Product.where(import_id: params[:id]).joins(:uploads).where.not(file: nil) 
+0

私はこれがより好きです! – bkunzi01

関連する問題