Rails无法验证名称的存在

时间:2015-12-16 07:57:31

标签: ruby-on-rails ruby

我正在尝试为name属性编写验证测试,以检查它是否存在。我的user_test.rb文件:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict> 

我的user.rb文件:

require 'test_helper'

class UserTest < ActiveSupport::TestCase

  def setup
    @user = User.new(name: "Example User", email: "user@example.com")
  end

  test "should be valid" do
    assert @user.valid?
  end

  test "name should be present" do
    @user.name = " "
    assert_not @user.valid?
  end

end

测试时我在控制台中的I / O:

class User < ActiveRecord::Base
  validates(:name, presence: true)
end

2 个答案:

答案 0 :(得分:3)

您没有收到错误,因为它不是nil。了解nilblank here

之间的区别

您需要提供这样的验证,以避免出现空白值:

validates :name, presence: true, allow_blank: false

希望它有所帮助!

答案 1 :(得分:1)

问题是,presence: true验证属性是否不是nil。您需要使用allow_blank来验证字符串是否为空。

validates :name, presence: true, allow_blank: false

查看有关此主题的API documentation