2012-01-10 24 views
0

我在這裏有一個奇怪的,它只發生在開發模式下。這條線(控制器):Rails實例變量吐出SQL代碼而不是長度

@searches.length 

產生以下錯誤:

NoMethodError: undefined method fields' for nil:NilClass: SELECT searches.*, COUNT(searchTerm) AS timesSearched FROM searches` WHERE (results = 0 AND searchDate > DATE_SUB(CURDATE(), INTERVAL 7 DAY)) GROUP BY searchTerm ORDER BY timesSearched DESC, searchDate DESC

SQL正在被調用,然後分配給這個實例變量查詢。這在生產模式中不會發生,並且不會發生。

我在想它必須是我的開發環境中的東西,但想不出它可能是什麼。

任何幫助將不勝感激。

的Ruby 1.8.7和Rails 3.1.1

編輯:發帖開發環境的文件內容

config.cache_classes = false 
    config.whiny_nils = true 
    config.encoding = "utf-8" 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 
    config.action_mailer.raise_delivery_errors = false 
    config.active_support.deprecation = :log 
    config.action_dispatch.best_standards_support = :builtin 
    config.assets.compress = false 
    config.assets.debug = false 
    config.assets.precompile += %w(*.css) 

回答

0

有沒有可能是你在開發配置的數據庫沒有表/搜索所需的字段(因此嘗試將NULL設置爲NULL)。它可以像允許空標誌改變的字段一樣小。

還有你的開發數據庫(更改密碼,允許主機等)更改任何權限?

否則,請創建生產數據庫的轉儲,使用它創建臨時數據庫並將該開發配置指向該數據庫並查看是否得到相同的錯誤。

還比較你的生產和開發配置文件。

如果您有任何更多的信息張貼在這裏,我們會看到,如果我們能幫助:)

戴夫

+0

謝謝。生產和開發數據庫是同一個。生產和開發文件是完全不同的,他們需要是對的?雖然我看不到任何可能導致dev文件問題的選項。任何其他想法? – kakubei 2012-01-10 12:07:37

+0

默認配置通常有幾行不同。如何不同取決於項目的複雜性。 另外我注意到你有config.whiny_nils設置爲true。默認情況下,生產將此設置爲false,開發將其設置爲true。基本上這會在方法作用於零對象時導致錯誤。 你可以試試@ searches.length,除非@ searches.nil? – detheridge02 2012-01-10 12:22:28

+0

我曾嘗試設置whiny_nils關閉和相同的錯誤,這是有道理的,因爲它抱怨未定義的方法。除非@ searches.nil?我得到相同的錯誤:( – kakubei 2012-01-10 12:36:45

0

我能夠通過安裝RVM升級到Ruby 1.9.3修正錯誤。在OS X附帶的1.8.7版本中必定會有些東西會導致這些問題,因爲我開始爲其他查詢獲取它們。

早些時候我使用1.9.2,但不得不降級,因爲我的託管站點仍然使用1.8.7。

我很感謝你的幫助,他們是非常好的主意,非常感謝。

相關問題