用户必须输入列表中逗号分隔的技能

时间:2012-01-15 23:23:19

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有这个输入字段:<%= f.text_field :skills %>我想让我的用户列表最多5个技能(或单词)。每个用逗号分隔。

仅供参考,:技能目前只是我的用户表中的一列。

我将如何做到这一点?我在想,它首先需要将空格分隔为单词,对其进行限制,然后用逗号组合它们。

2 个答案:

答案 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),并将您的技能设置为逗号序列化值。然后你的验证员将解包技能,检查它们的大小,你很高兴去!