首页 > 解决方案 > 如何采摘然后连接数组中的最后两个

问题描述

我没有得到预期的结果。Pluck返回一个数组,为什么.last不起作用?

这是一个没有实际示例数据的示例:

Model.all.map { |obj| {name: obj.name, accounts: obj.accounts.pluck(:id, :code, :name) }

# Returns:
[
  {name: "Stock", accounts: ["12345", "090", "Imports 2%"], [...] },
  {...}
],
[...]

我实际上在做什么:

Model.all.map { |obj| {name: obj.name, accounts: obj.accounts.pluck(:id, :code, :name).last(2).join('-') }

# Returns

[
  {name: "Stock", accounts: "12345-090-Imports 2%"},
  {...}
],
[...]

我预计:

[
  {name: "Stock", accounts: ["12345", "090-Imports 2%"], [...]},
  {...}
],
[...]

我究竟做错了什么?

标签: ruby-on-railsrubyruby-on-rails-6

解决方案


Model.all.map do |obj| 
  accounts = obj.accounts.pluck(:id, :code, :name).map { |id, code, name| [id, "#{code}-#{name}"] }
  {
    name: obj.name, 
    accounts: accounts
  }
end

但应该优化


推荐阅读