绕过 ActiveAdmin::DatabaseHitDuringLoad

ast*_*eal 7 ruby ruby-on-rails activeadmin

我正在尝试根据我在 db 中获得的内容在活动管理员中创建范围。我得到了一个奖励ActiveAdmin::DatabaseHitDuringLoad(在我们使用的 CI 软件中,在本地工作,因为数据库已经加载)

Your file, app/admin/user.rb (line 8), caused a database error while Active Admin was loading. This is most common when your database is missing or doesn't have the latest migrations applied. To prevent this error, move the code to a place where it will only be run when a page is rendered.

我尝试做的是为每个city我在 db 中获得的范围添加一个范围

ActiveAdmin.register User do
    City.all.each do |city|
      scope city.name, :default => true do |users|
        city.users
      end
    end
end
Run Code Online (Sandbox Code Playgroud)

我知道错误是我们City.all在加载数据库之前调用。有没有办法绕过它并轻松创建我需要的范围?

小智 5

转到您的routes.rb并捕获异常以避免破坏构建。

代替

ActiveAdmin.routes(self)
Run Code Online (Sandbox Code Playgroud)

ActiveAdmin.routes(self) rescue ActiveAdmin::DatabaseHitDuringLoad
Run Code Online (Sandbox Code Playgroud)

  • FWIW 这个线性语法并没有达到它所预示的效果。它拯救所有异常并返回 ActiveAdmin::DatabaseHitDuringLoad。最好使用多行开始/救援语法。 (2认同)