gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:18:23 24 4
gpt4 key购买 nike

我在遗留数据库表上创建一个 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 指出这一点!

关于ruby-on-rails-3 - Rails Article.find 1 在遗留数据库上引发 ActiveRecord::StatementInvalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com