Я бы использовал find_or_create_by
( см. Документы ):
skills.each do |skill_name|
skill = Skill.find_or_create_by(skill: skill_name)
skill.increment(:skill_count)
skill.save
end
ПРИМЕЧАНИЕ : вам нужно установить столбец в целочисленный столбец с0, как значение по умолчанию, для правильной работы.
Я бы также посоветовал вам переименовать атрибуты вашей модели навыков в:
Skill
-> name
-> count
часто это довольно избыточно для использования Skill.skill_count
.
Sideote: в строке
skills = params[:skills].split(',')
вы собираетесь создавать навыки с пробелами в названии, почему?
skills = 'Lorem, Ipsum, Is, A, Dummy, Text'.split(',')
skills # => ['Lorem', ' Ipsum', ' Is', ' A', ' Dummy', ' Text']
Я думаю, что вы хотите полосу разделенные значения:
skills = params[:skills].split(',').map(&:strip)