2016-06-24 99 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'放在錯誤的文件夾中。 –

相關問題