次のようなコードを書いたところ、配列の配列が帰ってきて混乱しました。
numbers.split(/,/) #=> [["1","2","3"]]
原因は、split済みの配列に対してsplitを呼んでいたせいでした。
numbers = "1,2,3".split(/,/)
numbers.split(/,/) #=> [["1","2","3"]]
RailsのActiveSupportは Array#split を用意しています。特定の値の前後で配列を配列の配列に分割するものです。
[1, 2, 3, 4, 5].split(3) # => [[1,2],[4,5]]
しかし、変数に文字列が入っているつもりが配列だった、という場合には面食らうことなります。
def include_three?(string)
string.split(/,/).include?("3")
end
include_three?("1,2,3,4,5".split(/,/)) #=> false