我可以写下面的...
raw_data.categories.each do |category|
obj.categories << category
end
改为如下所示? ...
obj.categories << raw_data.categories
最佳答案
看看Array#<<
和 Array#push
.
Array#<<
取一个附加到给定数组的位置。例如:
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array << 'd' # => ["a", "b", "c", "d"]
但是,如果你传递一个数组,你会对结果感到惊讶
irb> array << ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Array#push
可以处理 1+ 个对象,每个对象都附加到数组中。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array.push 'd' # => ["a", "b", "c", "d"]
但是,调用 #push
使用数组可以得到与 #<<
相同的结果.
irb> array.push ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
为了压入数组中的所有元素,只需添加 *
在第二个数组之前。
irb> array.push *['e', 'f', 'g'] # => ["a", "b", "c", "d", "e", "f", "g"]
在相关说明中,Array#+
确实连接数组,它也将允许重复值。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array += ['d'] # => ["a", "b", "c", "d"]
irb> array += ['d'] # => ["a", "b", "c", "d", "d"]
如果这是不需要的,|
运算符将返回两个数组的联合,没有重复值。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
关于ruby-on-rails - 在 Rails 3.1 中可以使用 << 运算符插入多个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302888/