質問

次のことを書いてもらえますか...

      raw_data.categories.each do |category|
          obj.categories << category
      end

代わりに次のように? ...

      obj.categories << raw_data.categories
役に立ちましたか?

解決

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"]]

配列内のすべての要素をプッシュするために、 * 2番目の配列の前。

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"]

これが望ましくない場合、 | オペレーターは、2つのアレイの組合を複製することなく返却します。

irb> array  = %w[ a b c ]         # => ["a", "b", "c"]
irb> array |= ['d']               # => ["a", "b", "c", "d"]
irb> array |= ['d']               # => ["a", "b", "c", "d"]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top