Rubyで重複ありの補填対象user_idリストを補填アイテム数ごとにファイルにまとめる

userIdList = [1,2,1,1,2,3,4,4]

#group by count
x = userIdList.inject(Hash.new(0)) { |h, e| h[e] += 1 ; h }
reward_num_list =  x.values.uniq.sort

#open
f_list = []
reward_num_list.each do |n|
    filename = n.to_s + '.txt'
    f_list[n] = open(filename, 'w')
end

#write
x.each_with_index do |(userId, num), i|
    s = userId.to_s + "\n"
    f_list[num].write(s)
end

#close
reward_num_list.each do |n|
    filename = n.to_s + '.txt'
    f_list[n].close
end

.

output:
1.txt
2.txt
3.txt