2014-10-07 73 views
0

我有一個使用舊數據庫的Rails 3.2應用程序,所以大多數表和ID都不是Rails格式。整個應用程序使用set_table_nameset_primary_key,並且由於我們最近從3.0遷移到了3.2,所以我們收到了大量的棄用警告。Rails「self.primary_key ='another_key'」不起作用

建議使用self.primary_key = 'another_key',但由於某種原因,此方法無效。

我使用FactoryGirl建立並保存模型,當它試圖拯救它給了我下面的錯誤模型(在Oracle數據庫上)

ActiveRecord::StatementInvalid: 
    OCIError: ORA-01400: cannot insert NULL into (sql string) 

基本上從我的理解,自定義的primary_key沒有被正確設置,並且以nil結尾,這顯然會引發這個錯誤。 SQL字符串具有正確的自定義PK,但似乎傳遞給它的值爲null。

有沒有解決這個問題?如果我保留已棄用的set_primary_key,它的工作原理是完美的,但我知道它已被取消,我不想繼續使用它。

回答

0

我發現了這個問題。原來,在一些文件,我在做

self.primary_key = :some_key 

這是失敗,因爲我傳遞一個符號,而不是一個字符串。將:some_key改爲字符串無處不在解決了這個問題。