如何采摘然后连接数组中的最后两个
How to pluck then concatenate the last two in array
我没有得到预期的结果。 Pluck returns 一个数组,为什么 .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%"], [...]},
{...}
],
[...]
我做错了什么?
将pluck(:id, :code, :name).last(2).join('-')
替换为last(2).pluck(:id, :code, :name).join('-') }
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
但应该优化
我没有得到预期的结果。 Pluck returns 一个数组,为什么 .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%"], [...]},
{...}
],
[...]
我做错了什么?
将pluck(:id, :code, :name).last(2).join('-')
替换为last(2).pluck(:id, :code, :name).join('-') }
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
但应该优化