2012-08-03 48 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%肯定链接选择将智能添加列的其余部分。