【发布时间】:2016-06-12 05:49:49
【问题描述】:
我正在尝试使用 postgresql 设置 新 Rails 5 应用程序(ruby 2.3.1,rails 5.0.0.rc1),设计 gem 并且它无法运行 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 存在并且内容正确。此外,User 模型(这是我的应用程序中目前唯一的模型)按预期扩展了 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
【问题讨论】:
-
你的
application_record.rb文件的内容是什么? -
将 application_record.rb 的内容添加到问题中
-
谢谢。我创建了一个示例 5.0 RC 应用程序,但无法重现此问题。我建议在 Rails 问题跟踪器上打开一个问题 - github.com/rails/rails/issues - 将示例应用程序上传到 Github 以重现该问题。在 Github 问题上将我标记为 @prathamesh-sonpatki。谢谢。
-
感谢@PrathameshSonpatki。我已经在 github 上上传了我的项目,并按照您的建议提交了一个错误:github.com/rails/rails/issues/25379。我也找到了这个解决方法:如果我在我的用户模型中添加
self.table_name = 'users',一切正常。
标签: postgresql devise ruby-on-rails-5