2014-09-26 3 views
0

Итак, следуя учебным пособиям для примера Hartl и имея немного проблем с получением некоторых тестов в прошлом относительно спецификации отношений.Rails Sample_App, ошибки теста

в моем файле спецификации у меня есть

describe "follow methods" do 

    before(:each) do 
    @follower = User.create!(:name => "Example User", 
     :email => "[email protected]", 
     :password => "foobar", 
     :password_confirmation => "foobar" 
    ) 
    @followed = User.create!(:name => "Example User", 
     :email => "[email protected]", 
     :password => "foobar", 
     :password_confirmation => "foobar" 
    ) 
    @attr = { :followed_id => @followed.id } 
    @relationship = @follower.relationships.create!(@attr) 

    end 

Я знаю, что это не то же самое, как и в книге, однако я не используя FactoryGirl.

При использовании этого блока для тестов я получаю сообщение об ошибке с моим @attr, который читает;

Failure/Error: @attr = { :followed_id => @followed.id } 
NoMethodError: 
    undefined method `id' for #<Hash:0x00000108d0b2a0> 

Однако, когда я запускаю этот блок на своей консоли, он работает нормально. Идентификатор установлен в соответствии с @attr, и я могу позвонить .id в @followed.

Любая помощь будет очень признательна, как всегда!

+0

что произойдет, если вы используете '.create()' вместо '.create (!) ' – sircapsalot

+0

Произошла такая же ошибка! – user2085143

+0

попробуйте использовать '@followed ['id']' вместо '@ follow.id' – sircapsalot

ответ

0

Согласно вашей ошибке, метод id не существует для хэша.

Чтобы получить доступ, что вы можете использовать это:

@attr = { :followed_id => @followed['id'] } 

Проблема вы пытались сделать @followed.id