2017-01-16 220 views
1

我正在使用Michael Hartl的书来学习rails。我正在讨论关于唯一性验证的部分。我已经逐字逐句复制了它(看起来),但它仍然没有通过。有什么想法吗?为什么我的测试不通过?

User.rb:

class User < ApplicationRecord 
    validates :name, presence: true, length: {maximum: 50} 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, length: {maximum: 255}, 
    format: { with: VALID_EMAIL_REGEX}, 
    uniqueness: case_sensitive: false 
end 

测试/ User_test.rb

require 'test_helper' 

class UserTest < ActiveSupport::TestCase 

    def setup 
     @user = User.new(name: "Example User", email: "[email protected]") 
    end 

test "email addresses should be unique" do 
    duplicate_user = @user.dup 
    duplicate_user.email = @user.email.upcase 
    @user.save 
    assert_not duplicate_user.valid? 
end 

错误:

错误:

UserTest#test_name_should_be_present: 
SyntaxError: /home/benjamin/Desktop/Projects/sample_app/app/models/user.rb:6: syntax error, unexpected tLABEL 
    uniqueness: case_sensitive: false 
          ^

回答

3

你需要写:

uniqueness: { case_sensitive: false } 

由于

{a: b: :c} 

是一个语法错误。

它是:

{:a=>{:b=>:c}} 

{{:a=>:b}=>:c} 

+0

当我被允许时,我会接受你的回答是正确的。 – Benjamints

+0

这是迈克尔的错误,还是轨道改变了?我已经完全按照他的方式写下来了。 – Benjamints

+0

虽然谢谢! – Benjamints

相关问题