2011-11-04 55 views
0

我正在使用Devise身份驗證系統的Ruby on Rails應用程序。 https://github.com/plataformatec/deviseRuby on Rails從SQlite數據庫切換到Postgresql給出了未定義的方法`to_sym'爲零:NilClass錯誤

我在互聯網上搜索了一個類似的問題,但對我來說卻無濟於事。我想給你一點背景,這一切都始於2個獨立的應用程序。其中之一是使用設計。我目前正試圖將兩個應用程序混合成一個。即使將模型視圖和控制器放在需要的地方,我也沒有遇到任何問題。但是,我們需要從Sqlite3數據庫切換到Postgresql數據庫。只要我修改database.yml文件以指向新的Postgres數據庫並重新啓動服務器,我就開始在整個應用程序中獲取各種to_sym錯誤,併爲使用Devise添加到應用程序的新功能發送路由錯誤。

在我切換到Postgresql數據庫之前,我通過數據庫轉換器運行了我的developement.sqlite3文件 - 這是我過去沒有遇到過的問題。

我不確定如何調試此應用程序,因爲這些to_sym錯誤在整個過程中都發生。

給你舉一個例子下面是一個停止工作的一個頁面:

NoMethodError主頁#指數

顯示C:/用戶/ chunter33 /桌面/ devise_forem /應用/視圖/layouts/application.html.haml其中行#19提出:

未定義的方法`to_sym」的零:NilClass

  • 16:%A {:HREF => 「#」} = T(」 web-app-theme.profile「,:default =>」Profile「)
  • 17:%li
  • 18:%a {:href =>」#「} = t設置「,:默認=>」設置「)
  • 19: - 如果signed_in?
  • 20:%的Li
  • 21:%一
  • 22:= current_user.email
  • 應用跟蹤:

    應用程序/助手/ application_helper.rb:3:`signed_in ?

    應用程序/視圖/佈局/ application.html.haml:19: `_app_views_layouts_application_html_haml__944875441_29833656'

    注:如果我切換回SQLite的我不再得到任何這樣的錯誤。

    我使用Ruby 1.8.7和Rails 3.1

    任何想法,我可以開始尋找?

    讓我知道是否有任何您需要的附加信息。

    +0

    它可能在助手中,你是否嘗試加入它,添加一些日誌記錄或binding.pry? –

    回答

    0

    我發現了問題的根源。我使用ESF數據庫遷移工具包將我的數據從sqlite3遷移到Postgresql。問題在於它沒有正確地處理從sqlite3到PostgreSQL的轉換,而rails自動生成的id列在PostgreSQL中不起作用,就像它在Sqlite3中一樣。要解決這個問題,我只需要刪除數據庫中的所有表,將數據庫版本重置爲0並運行rake數據庫:migrate,而我的database.yml設置爲運行PostgreSQL數據庫。

    0

    我不知道紅寶石,但我知道PostgreSQL,這與數據庫無關。

    你的兩個相關的錯誤是:

    1. NoMethodError主頁#指數
    2. 未定義的方法`to_sym」的零:NilClass

    你已經有了它試圖一零/空對象調用「to_sym」。您的模板中的某些變量未定義。

    既然你已經改變了DB,我懷疑之一:

    1. 到數據庫的連接失敗。
    2. 查詢在您期待某些內容時未返回任何行。

    這很難說,但更多的錯誤檢查和一點日誌記錄應該有所幫助。

    相關問題