2014-10-07 74 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改为字符串无处不在解决了这个问题。