Mysql Rails,将列添加到select语句

Mysql Rails,将列添加到select语句,mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,是我可以选择的东西,尽管我不想使用产品。*因为我不想每次都使用所有数据,我只想将sum()添加到select{stuff}from products中的内容中 如何将某些内容附加到rails选择的列,而不是覆盖它? 谢谢 Rails将在默认情况下选择“*”,这与您所说的只想选择一些列的说法有点矛盾。您是否尝试过只做您需要的列,然后根据需要选择获取更多/所有列?我假设您需要product\u id才能加入工作 @products=@products .group('products.id')

是我可以选择的东西,尽管我不想使用产品。*因为我不想每次都使用所有数据,我只想将sum()添加到select{stuff}from products中的内容中

如何将某些内容附加到rails选择的列,而不是覆盖它?
谢谢

Rails将在默认情况下选择“*”,这与您所说的只想选择一些列的说法有点矛盾。您是否尝试过只做您需要的列,然后根据需要选择获取更多/所有列?我假设您需要
product\u id
才能加入工作

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

我99%确信,链接select将智能地添加其余的列。

是的,能够指定附加到select表达式的作用域非常有用,因为这会妨碍作用域的可重用性。。。
@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