下面我有一个使用一堆each
迭代器
user.user_spells.each do |us|
us.spell.buff_effects.where(stat_effected:'gold').each do |be|
value = value + be.value
end
end
我想使用.map返回所有结果的列表,所以我可以在一行中完成。
我想出了:
user.user_spells.map { |us| us.spell.buff_effects.where(stat_effected:stat_effected) }.each do |be|
value = value + be.value
end
然而...... .map
块返回一些空数组。不确定如何正确写它。
任何帮助将不胜感激!感谢
答案 0 :(得分:1)
可能沿着这些方向,如果你想要的是最终值的总和:
value =
user.user_spells.flat_map do |us|
us.spell.buff_effects.where(stat_effected:'gold').map(&:value)
end.reduce(&:+)