gpt4 book ai didi

postgresql - Rails 5 - PG::UndefinedTable: 错误:关系 "application_records"不存在

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

我正在尝试使用 postgresql、devise gems 设置一个 Rails 5 应用程序(ruby 2.3.1、rails 5.0.0.rc1),但它无法运行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 因上述错误而阻塞。

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

application_record.rb 的内容:

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

最佳答案

PG::UndefinedTable: ERROR:  relation "application_records" does not exist

如果删除该行,也会发生错误:

self.abstract_class = true

来自 app/models/application_record.rb

该行让 Rails 知道这不是一个应该持久保存到数据库的模型,这里有 Rails 抽象类的一个很好的总结:https://medium.com/@jeremy_96642/deep-rails-how-to-use-abstract-classes-6aee9b686e75

关于postgresql - Rails 5 - PG::UndefinedTable: 错误:关系 "application_records"不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771127/

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