ruby-on-rails – Rails 3.1.0.rc4 Postgres – 重启后无法读取或写入数据库

ruby-on-rails – Rails 3.1.0.rc4 Postgres – 重启后无法读取或写入数据库,第1张

概述我刚刚开始使用最新版本的Rails和PostgreSQL编写应用程序.我创建了数据库,添加了所需的gem,配置了 database.yml文件并启动了两个模型 – 用户(这个用于认证的Devise)和Group.我为起始页面创建了一个额外的控制器(简单的一个 – 仅显示链接列表).一切似乎都很好,我能够将测试数据添加到数据库 – 直到我今天早上回来并想继续工作. 只要我留在主页上,一切看起来就像昨 我刚刚开始使用最新版本的Rails和Postgresql编写应用程序.我创建了数据库,添加了所需的gem,配置了 database.yml文件并启动了两个模型 – 用户(这个用于认证的Devise)和Group.我为起始页面创建了一个额外的控制器(简单的一个 – 仅显示链接列表).一切似乎都很好,我能够将测试数据添加到数据库 – 直到我今天早上回来并想继续工作.

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

Routing ErrorYou 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_deFinition320:  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’的小宝石,我曾经自动检测外键.当我回滚它所做的更改,删除它并手动更改表时,我的应用程序再次运行.

谢谢大家的帮助!

总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails 3.1.0.rc4 Postgres – 重启后无法读取写入数据库全部内容,希望文章能够帮你解决ruby-on-rails – Rails 3.1.0.rc4 Postgres – 重启后无法读取或写入数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1266411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存