为什么我的主动管理员会显示在本地工作的错误?

时间:2017-04-18 13:18:00

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

我正在尝试在我的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 ::设计:: SessionsController#新

     

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)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   并且不是a.attnum

的a.attisdropped ORDER

我克隆了我的heroku,看看admin_users中是否存在schema.rb。我发现admin_users中有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

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

1 个答案:

答案 0 :(得分:1)

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

  

PG :: UndefinedTable:ERROR:relation" 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