【问题标题】:Rails, add column to select statementRails,将列添加到选择语句
【发布时间】:2012-08-03 17:42:30
【问题描述】:
@products=@products
  .group('products.id')
  .joins(:inventories)
  .select('products.*, sum(inventories.units_available) as `level`')

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

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

【问题讨论】:

  • 是的,能够指定附加到选择表达式的作用域非常有用,因为它阻碍了作用域的可重用性......

标签: mysql ruby-on-rails ruby activerecord


【解决方案1】:

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% 确信链接选择将智能地添加其余列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多