加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:27:46 所属栏目:百科 来源:网络整理
导读:我正在遗留数据库表上创建一个rails应用程序.一切都在本地工作正常,但在服务器上,每当我做Article.find(1)时我都会遇到此错误 Could not log "sql.active_record" event. NoMethodError: undefined method `name' for nil:NilClassActiveRecord::StatementIn
我正在遗留数据库表上创建一个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指出这一点!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读