2017-01-16 2 views
1

Я использую книгу Майкла Хартля, чтобы узнать рельсы. Я освещаю раздел о проверке уникальности. Я скопировал это слово в слово (как кажется), и он все еще не проходит. Есть предположения?Почему мои тесты не проходят?

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

Смежные вопросы