2016-06-24 96 views
1

我遵循了codeschool教程,但是我遇到了一些麻烦。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

我觉得教程可能试图从一个普通的Ruby使用RSpec的过渡反对在ActiveRecord对象上使用rspec-rails宝石。对于使用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

要解决您可以在zombie.rb以内require 'activerecord'。根据它是否已安装,您可以从您的命令行也需要gem install activerecord,或者添加gem 'activerecord'Gemfile和运行bundle install

+0

这真的很奇怪,我尝试了两种方法你提到,但它仍然会抛出同样的错误。 如果我在'zombie.rb'中添加'require'activerecord'',它会抛出'require':无法加载这样的文件--activerecord(LoadError)'。我在github上添加了这个项目,并发布了问题。 –

+0

如果您从终端输入“gem install activerecord --no-ri”,您会看到什么? – Cam

+0

对不起,我似乎把'zombie.rb'放在错误的文件夹中。 –

相关问题