2016-06-24 5 views
1

Я следил за учебным пособием, но я столкнулся с некоторыми проблемами.Rspec неинициализированная константа ActiveRecord (NameError)

Вот zombie_spec.rb

#spec/model/zombie_spec.rb 
require 'spec_helper' 
require 'zombie' 


describe Zombie do 
it 'is invalid without a name' do 
    zombie = Zombie.new 
    zombie.should_not be_valid 
    end  
end 

zombie.rb

#spec/zombie.rb 
class Zombie < ActiveRecord::Base 
    validates :name, presence: true 
    ... 
end 

После того как я напечатал rspec spec/models/zombie_spec.rb, это бросить uninitialized constant ActiveRecord (NameError)

Я поставил этот проект на github

ответ

0

Я думаю, что учебник может попытаться перейти от использования RSpec на равнине Руби объект для использования жемчужины rspec-rails на объекте ActiveRecord. Для примеров, которые используют rspec-rails, у вас должна быть модель в файле app/models/zombie.rb. Это то, что будет искать спецификация в spec/models/zombie_spec.rb. Кроме того, ваши спецификации должны будут потребовать rails_helper, а не spec_helper.

# app/models/zombie.rb 
class Zombie < ActiveRecord::Base 

    validates :name, presence: true 

    def hungry? 
    true 
    end 
end 

# spec/models/zombie_spec.rb 
require 'rails_helper' 

describe Zombie do 
    it 'is invalid without a name' do 
    zombie = Zombie.new 
    zombie.should_not be_valid 
    end 
end 
+0

Я неправильно понимаю его смысл, спасибо. Я изменил и получил правильное ожидание. –

1

Zombie распространяется ActiveRecord::Base, но ваш код не найден ActiveRecord.

Чтобы исправить это, вы можете require 'activerecord' в пределах zombie.rb. В зависимости от того, является ли он или нет установлен, то, возможно, потребуется также gem install activerecord из командной строки или, в качестве альтернативы, добавьте gem 'activerecord' к вашему Gemfile и запустить bundle install

+0

Это действительно странно, я пытаюсь упомянуть два способа, но по-прежнему бросает ту же ошибку. Если я добавлю 'require 'activerecord'' в' zombie.rb', он выкинет 'require': не может загрузить такой файл - activerecord (LoadError)'. Я добавляю этот профайл на github и отправляю его на вопрос. –

+0

Что вы видите, если вы наберете «gem install activerecord --no-ri» с вашего терминала? – Cam

+0

Прошу прощения, кажется, я поставил 'zombie.rb' в неправильную папку. –

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