2012-11-27 75 views
2

application_controller.rb的Rails 3未初始化的常量的ActiveRecord :: RecordInvalid

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    rescue_from ActiveRecord::RecordInvalid, :with => :error_render_method 
    rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found 

    def error_render_method 
    end 

    def record_not_found 
    end 

end 

當我運行rspec我得到這個錯誤:

uninitialized constant ActiveRecord::RecordInvalid (NameError) 

我用Google搜索,發現一些人添加require 'active_record/errors'到該文件,但是當我做錯時仍然存在。

我使用rails (3.2.9)

+4

'require「active_record/validations.rb」'這就是類的地方https://github.com/rails/rails/blob/0034b7822d6132f5945b0514a5391d18e52aa4b6/activerecord/lib/active_record/validations.rb這就是說,這應該已經是包括和你的代碼應該正常工作,因爲它是 –

+0

我試着在Rails 3.2.9下新創建的應用程序上的代碼。工作得很好,沒有任何「需要」。檢查你的Gemfile,也許你有一些奇怪的寶石呢? – jdoe

+0

@injekt指出的require語句起作用。最奇怪的是,它只在使用rspec運行時失敗。如果我使用Spork,或者在開發中運行它,它就會起作用。 – Nerian

回答

1

我得到了同樣的問題,當我開始獨角獸。

我通過引用常量"ActiveRecord::RecordInvalid"解決了這個問題。 (沒有裸體常量ActiveRecord::RecordInvalid。)

我不知道原因,但好像ActiveRecord::RecordInvalid在啓動Unicorn時沒有加載。

0

這似乎已被固定在Rails 4.0和4.1之間。

相關問題