【问题标题】:Why my active admin shows errors which perfetly worked locally?为什么我的活跃管理员显示在本地完美运行的错误?
【发布时间】:2017-04-18 13:18:00
【问题描述】:

我正在尝试在我的 rails 应用程序中添加带有 activeadmin 的管理界面。我已在本地成功完成,但在部署到 heroku 后出现错误。 我已经完成了数据库迁移所需的所有事情,例如:

heroku run rake db:create
heroku run rake db:migrate

我改了制作看看报错:

config.consider_all_requests_local = true

当我导航到[mysitename].herokuapp.com/admin 时,会出现如下错误:

ActiveRecord::StatementInvalid in ActiveAdmin::Devise::SessionsController#new

PG::UndefinedTable: 错误: 关系“admin_users”不存在 LINE 8: WHERE a.attrelid = '"admin_users"'::regclass ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod, (SELECT c.collname FROM pg_collat​​ion c, pg_type t WHERE c.oid = a.attcollat​​ion AND t.oid = a.atttypid 和 a.attcollat​​ion t.typcollat​​ion), col_description(a.attrelid, a.attnum) 作为评论来自 pg_attribute a 左连接 pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"admin_users"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum

然后我克隆我的heroku,看看schema.rb 中的admin_users 是否存在。我发现schema.rb 中有admin_users 表。

我的routes.rb 是:

Rails.application.routes.draw do
  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
  devise_for :users
  resources :users, only: :show
  resources :posts do
    resources :comments
    resources :upvotes, only: :create
    resources :downvotes, only: :create
  end
  root 'posts#index'  
end

我的active_admin.rb 是:

ActiveAdmin.setup do |config|

  config.site_title = "Instapost"

  config.authentication_method = :authenticate_admin_user!

  config.current_user_method = :current_admin_user

  config.logout_link_path = :destroy_admin_user_session_path

  config.comments = false

  config.comments_menu = false

  config.batch_actions = true

  config.localize_format = :long

  config.favicon = 'favicon.ico'

end

我搜索了很多。但是任何解决方案都无法解决这个问题。如果有人知道这一点,请帮助我解决问题。

【问题讨论】:

  • 在heroku上创建表成功?
  • 表不是在heroku上创建的..
  • 你需要运行db:migrate 看看有什么错误。您可以通过运行heroku run bash 来获取交互式 shell 会话。
  • 该表已经存在于数据库中。这样我就删除了活动管理员创建的迁移。当我运行rake db:migrate 时没有出现错误。

标签: ruby-on-rails ruby heroku devise activeadmin


【解决方案1】:

当我看到错误时,我尝试了很多,终于成功了。主要错误是

PG::UndefinedTable: 错误:关系“admin_users”不存在

这表示关系admin_users 不存在。这意味着迁移正在尝试更改表中已经存在的admin_users。但实际上它并不存在于我们必须创建的表中。

因此,在活动管理员/db/migrate/xxxxxxxxxxxxx_add_devise_to_admin_users.rb 创建的迁移文件中,将change 替换为create,将change_table :admin_users do |t| 替换为create_table :admin_users do |t|

最后,推送到heroku并运行heroku run rake db:migrate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多