Ruby on rails 3 Rails Article.find 1在旧数据库上引发ActiveRecord::StatementInvalid

Ruby on rails 3 Rails Article.find 1在旧数据库上引发ActiveRecord::StatementInvalid,ruby-on-rails-3,postgresql,exception,activerecord,Ruby On Rails 3,Postgresql,Exception,Activerecord,我正在传统数据库表上创建rails应用程序。在本地一切正常,但在服务器上,每当我写文章时,我都会遇到这个错误。find(1) 遗留数据库有一个id字段,但是模式用 create_table "articles", :id => false, :force => true do |t| t.decimal "id", :precision => 10, :scale => 0, :null => false ... 注意,Article.find_by_i

我正在传统数据库表上创建rails应用程序。在本地一切正常,但在服务器上,每当我写文章时,我都会遇到这个错误。find(1)

遗留数据库有一个id字段,但是模式用

create_table "articles", :id => false, :force => true do |t|
  t.decimal  "id", :precision => 10, :scale => 0, :null => false
  ...
注意,Article.find_by_id(1)返回记录时没有任何问题


有什么办法解决这个问题吗?

更新了-见下文

事实证明,在模型中添加以下内容可以解决此问题:

class Article < ActiveRecord::Base
  set_primary_key :id 
  ...
类文章
大概是因为rails没有创建表,所以它不知道主键是什么字段。这似乎有点奇怪,但是,一个受过教育的猜测与警告-甚至一个更友好的错误消息-将不胜感激

更新: Rails 3.2+不推荐使用上述方法。新方法如下:

class Article < ActiveRecord::Base
  self.primary_key = :id 
  ...
类文章

感谢@lboix指出这一点

此选项似乎已更新:

希望有帮助:)

保重

class Article < ActiveRecord::Base
  self.primary_key = :id 
  ...