Ruby on rails 3 Rails Article.find 1在旧数据库上引发ActiveRecord::StatementInvalid
我正在传统数据库表上创建rails应用程序。在本地一切正常,但在服务器上,每当我写文章时,我都会遇到这个错误。find(1) 遗留数据库有一个id字段,但是模式用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
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
...