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

postgresql – Rails 5 – PG :: UndefinedTable:错误:关系“a

发布时间:2020-12-13 16:08:15 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 postgresql设置一个新的Rails 5应用程序( ruby 2.3.1,rails 5.0.0.rc1),设计gems并且由于以下错误而无法运行rails db:seed: PG::UndefinedTable: ERROR: relation "application_records" does not existLINE 8: WHERE a.attrelid = '"appli
我正在尝试使用 postgresql设置一个新的Rails 5应用程序( ruby 2.3.1,rails 5.0.0.rc1),设计gems并且由于以下错误而无法运行rails db:seed:

PG::UndefinedTable: ERROR:  relation "application_records" does not exist
LINE 8:                WHERE a.attrelid = '"application_records"'::r...
                                          ^
/Users//.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `async_exec'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `block in query'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:566:in `block in log'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activesupport-5.0.0.rc1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract_adapter.rb:560:in `log'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:87:in `query'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql_adapter.rb:739:in `column_definitions'
/Users/foo/.rvm/gems/ruby-2.3.1@rails5.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:227:in `columns'

经过大量的谷歌搜索后,我意识到这与ApplicationRecord base class change in rails 5有关.显然,没有名为application_records的表,因此active_support不应该寻找它.我已经检查过app / models / application_record.rb是否存在且具有正确的内容.此外,用户模型(当前我的应用程序中唯一的模型)按预期扩展了ApplicationRecord:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable,:lockable,:timeoutable and :omniauthable
  devise :database_authenticatable,:recoverable,:rememberable,:trackable,:validatable
end

rails db:migrate运行正常,但rails db:seed chokes有上述错误.

任何人都可以了解可能导致这种情况的原因吗?

application_record.rb的内容:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

解决方法

回答我自己的问题,这可能有助于其他人遇到类似的问题.

正如@PrathameshSonpatki在rails issue上提到的那样,这是因为userstamp gem在ActiveRecord :: Base而不是ApplicationRecord上注入了关系. (请注意,在撰写本文时,userstamp gem不兼容rails 5).

如果您有一个尚未使用rails 5测试的gem,并且您遇到一个问题,其中active_support会查找名为application_records的表,请检查您使用的某个gem是否在ActiveRecord :: Base类上注入了关系.基于this blog post,ApplicationRecord的目的是避免全局注入ActiveRecord :: Base.因此,您需要查找与Rails 5兼容的此类gem的版本或修补此类gem以将必要的行为注入ApplicaitonRecord而不是ActiveRecord :: Base.

(编辑:李大同)

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

    推荐文章
      热点阅读