如果记录在name
属性中有空格,我试图阻止保存记录。我正在使用包含ActiveModel的Mongoid,因此它应该与ActiveRecord完全相同。
class Post
include Mongoid::Document
field :name, type: String
validates :name, presence: true, format: { :with => /\S/ }
end
以下是我的规格。最后一个失败,我无法弄清楚原因。
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
答案 0 :(得分:3)
我认为你只需要名字字段中的字符。所以你应该使用:
validates :name, presence: true, format: { :with => /^\S+$/ }
查看结果here。此外,您可以使用invalid
使您的测试更流畅,如下所示:
post.should be_invalid
顺便说一下,这是一个品味问题。