Пользователь должен ввести навыки, разделенные запятыми в списке - PullRequest
0 голосов
/ 16 января 2012

У меня есть это поле ввода: <%= f.text_field :skills %>, и я хотел бы, чтобы в моем списке пользователей было до 5 навыков (или слов).Каждый разделен запятыми.

К вашему сведению: навыки - это только один столбец в моей таблице «Пользователи».

Как мне это сделать?Я думаю, что сначала нужно будет разделить пробелы словами, ограничить их, а затем объединить их запятыми.

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Если я правильно понимаю вопрос, что-то вроде этого должно дать вам то, что вы хотите:

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), и это установит для ваших навыков значение, запрограммированное запятой. Тогда ваш валидатор распакует навыки, проверит их размер, и вы готовы!

0 голосов
/ 16 января 2012

Чтобы проверить это, как насчет добавления теста проверки формата в класс?

    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 результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...