ruby-on-rails-3 – Rails Article.find 1在遗留数据库上引发ActiveRecord :: StatementInvalid

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – Rails Article.find 1在遗留数据库上引发ActiveRecord :: StatementInvalid前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在遗留数据库表上创建一个rails应用程序.一切都在本地工作正常,但在服务器上,每当我做Article.find(1)时我都会遇到此错误
Could not log "sql.active_record" event. NoMethodError: undefined method `name' for nil:NilClass
ActiveRecord::StatementInvalid: PG::Error: ERROR:  zero-length delimited identifier at or near """"
LINE 1: SELECT  "articles".* FROM "articles"  WHERE "articles"."" = $1 LIMIT 1

数据库有一个id字段,但架构描述了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指出这一点!

原文链接:https://www.f2er.com/ruby/271077.html

猜你在找的Ruby相关文章