Как использовать проверки формата ActiveModel? - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь предотвратить сохранение записи, если в атрибуте name есть пробелы.Я использую Mongoid, который включает ActiveModel, поэтому он должен работать точно так же, как ActiveRecord.

class Post
  include Mongoid::Document
  field :name, type: String

  validates :name, presence: true, format: { :with => /\S/ }
end

Вот мои спецификации.Последняя 1 не получается, и я не могу понять, почему.

describe Post do
  describe "validations" do
    # passes
    it "should require a name" do
      post = Post.new name: nil
      post.should_not be_valid
    end

    # passes
    it "should accept valid names" do
      post = Post.new name: "hello-with-no-spaces"
      post.should be_valid
    end

    # fails ?????
    it "should reject invalid names" do
      post = Post.new name: "hello with spaces"
      post.should_not be_valid
    end
  end
end

1 Ответ

3 голосов
/ 21 декабря 2011

Я думаю, вам нужны только символы в вашем поле имени. Поэтому вы должны использовать:

validates :name, presence: true, format: { :with => /^\S+$/ }

Смотрите результаты здесь . Кроме того, вы можете использовать invalid, чтобы сделать ваш тест более беглым, как показано ниже:

post.should be_invalid

Кстати, дело вкуса.

...