2012-08-03 47 views
2
@[email protected] 
    .group('products.id') 
    .joins(:inventories) 
    .select('products.*, sum(inventories.units_available) as `level`') 

是我有一個工作選擇,但我不希望使用的產品。*,因爲我不希望所有的數據每次,我只是想添加總和()的東西在選擇{填充}的東西從產品Rails中,添加列到SELECT語句

我該如何追加的東西列欄選擇而不是覆蓋它? 謝謝!

+0

是的,它能夠指定附加到選擇表達式的作用域是非常有用的,因爲它阻礙了作用域的可重用性...... – fatuhoku 2017-03-03 12:02:15

回答

4

默認情況下,Rails會選擇'*',所以有點違揹你所說的只想選擇一些列。你有沒有嘗試過只需要你需要的列,然後可選地獲取更多/所有的列,如果你需要它們?我假設你需要product_id的加盟工作..

@products = @products 
    .group('products.id') 
    .joins(:inventories) 
    .select('products.id, inventories.product_id, inventories.units_available, sum(inventories.units_available) as `level`') 

if i_need_some_other_column 
    @products = @products.select('products.some_other_column') 
end 

if i_really_need_all_the_columns 
    @products = @products.select('products.*, inventories.*') 
end 

我99%肯定鏈接選擇將智能添加列的其餘部分。