2017-01-16 241 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

相關問題