gpt4 book ai didi

ruby-on-rails - 从 ActiveRecord 对象中提取两个属性的快捷方式?

转载 作者:数据小太阳 更新时间:2023-10-29 06:24:18 24 4
gpt4 key购买 nike

是否有更短的方法来执行以下操作(

@user.employees.map { |e| { id: e.id, name: e.name } }
# => [{ id: 1, name: 'Pete' }, { id: 2, name: 'Fred' }]

用户 has_many 员工。这两个类都继承自 ActiveRecord::Base

上面有两点我不喜欢

  1. 它在映射之前将员工加载到内存中,
  2. 它很冗长(我猜是主观的)。

有没有更好的办法?

最佳答案

更新:

查看@jamesharker 的解决方案:从 ActiveRecord >= 4,pluck 接受多个参数:

@user.employees.pluck(:id, :name)

上一个答案:

对于 rails >= 3.2 中的单列,你可以这样做:

@user.employees.pluck(:name)

...但是由于您必须提取两个属性,您可以这样做:

@user.employees.select([:id, :name]).map {|e| {id: e.id, name: e.name} } 
# or map &:attributes, maybe

如果你真的需要底层操作,看看source of #pluck , 使用 select_all

关于ruby-on-rails - 从 ActiveRecord 对象中提取两个属性的快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com