Если я правильно понимаю вопрос, что-то вроде этого должно дать вам то, что вы хотите:
class User < ActiveRecord::Base
attr_accessor :raw_skills
validate :five_or_fewer_skills?
def five_or_fewer_skills?
if unpacked_skills.size > 5
self.errors.add(:skills, "Too many skills!")
end
end
def unpacked_skills
skills.split(',')
end
def pack_skills(raw)
skills = raw.join(',')
end
end
Затем в форме создания измените свое поле "навыков" на поле "raw_skills", и в процессе создания произнесите pack_skills(raw_skills)
, и это установит для ваших навыков значение, запрограммированное запятой. Тогда ваш валидатор распакует навыки, проверит их размер, и вы готовы!