Rails,添加列到select语句

时间:2012-08-03 17:42:30

标签: mysql ruby-on-rails ruby activerecord

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

是我可以选择的东西,虽然我不想使用产品。*因为我不想每次都获得所有数据,我只想将sum()添加到Select中的东西{来自产品的东西

如何将某些内容添加到rails栏中选择而不是覆盖它? 谢谢!

1 个答案:

答案 0 :(得分: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%确定链接选择将智能地添加其余列。