为什么我的活动管理员显示在本地正常工作的错误?
Why my active admin shows errors which perfetly worked locally?
我正在尝试在我的 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: ERROR: relation "admin_users" does not exist 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_collation c, pg_type t WHERE c.oid = a.attcollation AND t.oid =
a.atttypid AND a.attcollation <> t.typcollation),
col_description(a.attrelid, a.attnum) AS comment FROM pg_attribute a
LEFT JOIN 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
是否存在。我发现 admin_users
table 在 schema.rb
.
我的 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
我搜索了很多。但是任何解决方案都无法解决这个问题。如果有人知道这个请帮我解决问题。
看到错误,试了很多终于成功了。主要错误是
PG::UndefinedTable: ERROR: relation "admin_users" does not exist
这表示关系 admin_users
不存在。这意味着迁移正在尝试更改 table 中已经存在的 admin_users
。但是实际上它不存在table我们必须创建它。
因此,在活动管理员 /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
我正在尝试在我的 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: ERROR: relation "admin_users" does not exist 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_collation c, pg_type t WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation), col_description(a.attrelid, a.attnum) AS comment FROM pg_attribute a LEFT JOIN 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
是否存在。我发现 admin_users
table 在 schema.rb
.
我的 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
我搜索了很多。但是任何解决方案都无法解决这个问题。如果有人知道这个请帮我解决问题。
看到错误,试了很多终于成功了。主要错误是
PG::UndefinedTable: ERROR: relation "admin_users" does not exist
这表示关系 admin_users
不存在。这意味着迁移正在尝试更改 table 中已经存在的 admin_users
。但是实际上它不存在table我们必须创建它。
因此,在活动管理员 /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