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

ruby-on-rails – Rails 3.1.0.rc4 Postgres – 重启后无法读取

发布时间:2020-12-17 01:59:41 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用最新版本的Rails和PostgreSQL编写应用程序.我创建了数据库,添加了所需的gem,配置了 database.yml文件并启动了两个模型 – 用户(这个用于认证的Devise)和Group.我为起始页面创建了一个额外的控制器(简单的一个 – 仅显示链接列表).一切似乎都很
我刚刚开始使用最新版本的Rails和PostgreSQL编写应用程序.我创建了数据库,添加了所需的gem,配置了 database.yml文件并启动了两个模型 – 用户(这个用于认证的Devise)和Group.我为起始页面创建了一个额外的控制器(简单的一个 – 仅显示链接列表).一切似乎都很好,我能够将测试数据添加到数据库 – 直到我今天早上回来并想继续工作.

只要我留在主页上,一切看起来就像昨天一样.但是当我尝试访问组列表时,我收到以下错误:

Routing Error

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map

页面上没有其他信息,因此我查看了Webrick控制台并看到以下内容:

ActionController::RoutingError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map):
app/controllers/groups_controller.rb:1:in `<top (required)>'

像往常一样,我的控制器的第一行是:

class GroupsController < ApplicationController

我查看了其他动作,结果是一样的:意外的零对象.尝试对User执行任何操作时发生同样的问题.

我怀疑这是一个数据库问题(因为它根本没有影响完全没有使用数据库的控制器),所以我去了rails控制台,看看我是否可以手动添加条目.我不能.

ruby-1.9.2-p180 > group = Group.new
(some SQL)
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc4/lib/active_record/persistence.rb:320:in `attributes_from_column_definition'
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc4/lib/active_record/locking/optimistic.rb:69:in `attributes_from_column_definition'
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc4/lib/active_record/base.rb:1525:in `initialize'
  from (irb):1:in `new'
  from (irb):1
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc4/lib/rails/commands/console.rb:45:in `start'
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc4/lib/rails/commands/console.rb:8:in `start'
  from /home/lite/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.1.0.rc4/lib/rails/commands.rb:40:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

我查看了最顶层的文件(persistence.rb)并搜索了第320行.

319: def attributes_from_column_definition
320:  Hash[self.class.columns.map do |column|
321:    [column.name,column.default]
322:  end]
323: end

这个定义让我对可能发生的事情有了一些了解,所以我在控制台中再运行了一个命令(Group.inspect),并在以下行中出错:

attr_list = columns.map { |c| "#{c.name}: #{c.type}" } * ','

好像我无法访问我的表格列,但我不明白为什么.我使用相同的操作系统和内核在同一台计算机上以同一用户身份登录.出于好奇,我创建了另一个应用程序,重启后它也无法正常工作.

我现在花了四个小时寻找答案,但我找不到任何相关的东西.可能导致此问题的原因以及如何解决此问题?

解决方法

我找到了有罪的一个:名为’automatic_foreign_key’的小宝石,我曾经自动检测外键.当我回滚它所做的更改,删除它并手动更改表时,我的应用程序再次运行.

谢谢大家的帮助!

(编辑:李大同)

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

    推荐文章
      热点阅读