我有这个输入字段:<%= f.text_field :skills %>
我想让我的用户列表最多5个技能(或单词)。每个用逗号分隔。
仅供参考,:技能目前只是我的用户表中的一列。
我将如何做到这一点?我在想,它首先需要将空格分隔为单词,对其进行限制,然后用逗号组合它们。
答案 0 :(得分:0)
要验证它,如何在类中添加格式验证测试?
class Test
validate :valid_skills_format?
def valid_skills_format?
if !(self.skills =~ /regex_for_5_words_separated_by_commas/)
self.errors.add(:skills, "wrong format")
end
end
end
你也可以用分组(',')进行测试,并检查你是否有5个结果。
答案 1 :(得分:0)
如果我正确理解了这个问题,那么这样的话可以给你你想要的东西:
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)
,并将您的技能设置为逗号序列化值。然后你的验证员将解包技能,检查它们的大小,你很高兴去!