首页/新闻资讯/正文详情

ActiveAdmin 通用配置完全指南:从认证、命名空间到国际化

发布时间:2026/9/24 19:35:16 来源:云帆数科 栏目:资讯中心
ActiveAdmin 通用配置完全指南:从认证、命名空间到国际化
后端【免费下载链接】activeadminThe administration framework for Ruby on Rails applications.项目地址https://gitcode.com/gh_mirrors/ac/activeadmin点击查看免费下载本指南以 ActiveAdminRuby on Rails 应用的管理框架的config/initializers/active_admin.rb初始化文件为核心系统讲解认证方法、站点标题、国际化、命名空间、加载路径、资源评论、工具导航与页脚等全局配置项的用法与底层原理。阅读后你将掌握如何在应用级与命名空间级精准定制 ActiveAdmin 行为并理解这些配置在框架源码中的落点从而安全地应用到生产项目中。配置文件入口与 setup 机制ActiveAdmin 的所有通用配置都集中在应用初始化文件config/initializers/active_admin.rb中通过ActiveAdmin.setup do |config|块完成。安装 ActiveAdmin 时由 install generator 生成该文件其中带有大量注释说明每项配置的默认值和使用示例是日常查阅配置项的最佳起点。从源码结构看配置体系分为两层应用级设置ApplicationSettings见 lib/active_admin/application_settings.rb存放default_namespace、load_paths、localize_format、filter_attributes等面向整个应用的配置。命名空间级设置NamespaceSettings见 lib/active_admin/namespace_settings.rb存放site_title、current_user_method、authentication_method、route_options、default_per_page等可被每个命名空间单独覆盖的配置。两者的注册机制都在 settings_node.rb 中实现register(name, value)通过class_attribute声明配置属性并赋予默认值。Application类用method_missing把config.xxx ...的赋值转发到对应的设置节点见 application.rb而Namespace类同样通过method_missing将命名空间块内的赋值委托给命名空间自己的设置副本见 namespace.rb。认证配置强制登录与当前用户ActiveAdmin 依赖两个配置项来完成认证流程authentication_method控制器用来强制认证的方法一般通过 before_action 调用。current_user_method用于获取当前登录用户的方法。config.authentication_method :authenticate_admin_user! config.current_user_method :current_admin_user使用 Devise 安装时生成器会自动填入与 AdminUser 模型匹配的方法名:authenticate_admin_user!与:current_admin_user见 install 模板。这两个方法通常定义在你的ApplicationController中。如果希望完全关闭认证将两者都设为falseconfig.authentication_method false config.current_user_method false从 namespace_settings.rb 可以看到两者的默认值均为false也就是说只有在初始化文件中显式配置后认证才会生效。站点标题Site Title 选项每个页面的菜单栏左侧都会显示站点标题site title默认由生成器设置为应用名如Rails.application.class.name.split(::).first.titlecase。你可以通过以下配置完全自定义config.site_title My Admin Site config.site_title_link / config.site_title_image site_image.png config.site_title_image https://www.google.com/images/logos/google_logo_41.png config.site_title_image -(context) { context.current_user.company.logo_url }要点说明site_title支持字符串也支持Symbol或Proc见 namespace_settings.rb 中注册时声明的:string_symbol_or_proc类型动态标题场景下很有用。site_title_link控制点击标题跳转的 URL。site_title_image可以是相对路径、绝对 URL也可以是接收视图上下文的Proc——上面第三个示例展示了根据当前登录用户动态取公司 Logo 的典型多租户用法。国际化I18n与日期时间本地化语言包与自定义翻译ActiveAdmin 自带大量语言翻译文件全部位于仓库的 config/locales/ 目录包含en.yml、zh-CN.yml、ja.yml、fr.yml等 40 余种语言。要翻译成新语言或修改现有翻译只需把 config/locales/en.yml 复制到你自己应用的config/locales目录并修改即可。两点注意事项ActiveAdmin 不提供分页组件 kaminari 的翻译需要额外引入kaminari-i18ngem 才能让分页文案跟随 locale 变化。仓库自带的 kaminari 分页视图模板位于 app/views/active_admin/kaminari/供你参考其渲染结构。若使用 Devise 做认证可引入devise-i18ngem 来获得其他 locale 的认证相关翻译如登录、找回密码页文案。日期与时间的本地化格式ActiveAdmin 默认使用:long作为日期和时间的本地化格式对应 Rails I18n 中date.formats/time.formats的长格式。你可以覆盖为其他格式config.localize_format :short该配置在 application_settings.rb 中注册默认值:long。可运行bin/rails runner puts I18n.t(date.formats)查看你的应用中可用的格式键。命名空间组织资源的核心单元默认命名空间与路由在app/admin/posts.rb中注册资源时默认会载入admin命名空间# app/admin/posts.rb ActiveAdmin.register Post do # ... end此时 Post 资源在/admin/posts下访问。从 namespace.rb 的注释和实现可以看到命名空间决定了路由前缀route_prefix、控制器模块名module_name例如Admin::PostsController以及该命名空间下的菜单。注册到:root命名空间namespace: false则意味着不启用命名空间资源直接挂在/posts下。默认命名空间本身也可修改在初始化文件中设置config.default_namespace :super_admin即可而 application.rb 中的register方法会从options.fetch(:namespace) { default_namespace }决定资源归属。每个命名空间独立配置每个命名空间持有自己的设置副本继承自应用配置SettingsNode.build(application.namespace_settings)见 namespace.rb。因此可以用config.namespace(name)块为不同命名空间设置不同标题ActiveAdmin.setup do |config| config.site_title My Default Site Title config.namespace :admin do |admin| admin.site_title Admin Site end config.namespace :super_admin do |super_admin| super_admin.site_title Super Admin Site end end原则上setup 块中可用的每一项配置都能在命名空间级别单独覆盖。route_options多租户与子域名挂载多租户应用常常希望多个命名空间挂载到同一路径借助route_options的路由约束即可实现config.namespace :site_1 do |admin| admin.route_options { path: :admin, constraints: -(request){ request.domain site1.com } } end config.namespace :site_2 do |admin| admin.route_options { path: :admin, constraints: -(request){ request.domain site2.com } } end如果希望命名空间挂载在子域名而非路径下同样使用route_optionsconfig.namespace :admin do |admin| admin.route_options { path: , subdomain: admin } end这些route_options最终会透传给 router.rb 中的router.namespace namespace.name, **namespace.route_options.dup调用直接作用于 Rails 路由定义。注意:super_admin未设置route_options时其默认值为{}见 namespace_settings.rb。加载路径改变管理文件的存放目录默认情况下ActiveAdmin 的资源配置文件放在app/admin/目录下。这个默认路径注册在 application_settings.rb[File.expand_path(app/admin, Rails.root)]。你可以在初始化文件中改变它ActiveAdmin.setup do |config| config.load_paths [File.join(Rails.root, app, ui)] end也可以加载多个目录比如不同角色使用不同目录config.load_paths [ File.join(Rails.root, app, admin), File.join(Rails.root, app, cashier) ]从 application.rb 可以看到load!会遍历load_paths下所有**/*.rb文件并逐个加载同时 ActiveAdmin 会把这些目录从 Rails 的autoload_paths和eager_load_paths中移除避免常量重复加载见 application.rb。资源评论Comments配置ActiveAdmin 默认启用资源评论功能页面底部可对任意资源发表评论评论模型实现见 lib/active_admin/orm/active_record/comments.rb。可以在三个层级控制# 针对整个应用 ActiveAdmin.setup do |config| config.comments false end # 针对某个命名空间 ActiveAdmin.setup do |config| config.namespace :admin do |admin| admin.comments false end end # 针对某个资源 ActiveAdmin.register Post do config.comments false end评论相关的其他配置# 修改评论资源注册名 config.comments_registration_name AdminComment # 修改评论排序方式与排序列 config.comments_order created_at ASC # 禁用评论索引页的菜单项 config.comments_menu false # 自定义评论菜单 config.comments_menu { parent: Admin, priority: 1 }同时记得在需要显示评论的位置放置active_admin_comments_for(resource)comments_menu的哈希形式parent、priority与 menu.rb 中菜单项的构建方式一致支持挂到指定父菜单并按优先级排序。工具导航Utility Navigation定制页面右上角默认展示当前用户信息和登出链接这部分被称为 utility navigation。它本质上也是一个普通菜单因此可以完全替换为你自己的菜单ActiveAdmin.setup do |config| config.namespace :admin do |admin| admin.build_menu :utility_navigation do |menu| menu.add label: ActiveAdmin.info, url: https://www.activeadmin.info, html_options: { target: _blank } admin.add_current_user_to_menu menu admin.add_logout_button_to_menu menu end end end其中build_menu会在菜单构建前把块中定义的条目注入对应菜单见 namespace.rb而add_current_user_to_menu与add_logout_button_to_menu是命名空间提供的辅助方法用于恢复当前用户 登出链接的默认行为logout_link_path配置默认:destroy_admin_user_session_path则控制登出链接指向。页脚定制默认情况下每个页面底部都会显示 Powered by ActiveAdmin。可以覆盖成业务相关文案config.footer MyApp Revision v1.3更多可探索的全局配置除了本指南重点讲解的内容初始化文件模板中还注释了大量常用配置可按需启用分页config.default_per_page 30、config.max_per_page 10_000默认值定义于 namespace_settings.rb。过滤器config.filters true、config.include_default_association_filters true。批处理操作config.batch_actions true。CSV 导出config.csv_options { col_sep: ; }。下载链接config.download_links false或[:xml, :pdf]。面包屑config.breadcrumb false。敏感属性过滤config.filter_attributes [:encrypted_password, :password, :password_confirmation]默认值见 application_settings.rb。控制器过滤器config.before_action :do_something_awesome会作用于所有 ActiveAdmin 控制器实现见 application.rb。这些配置与本文介绍的所有设置遵循同一套规则在 setup 块顶层设置即为全局默认值在config.namespace块内设置则只影响对应命名空间。赞分享后端【免费下载链接】activeadminThe administration framework for Ruby on Rails applications.项目地址https://gitcode.com/gh_mirrors/ac/activeadmin点击查看免费下载相关推荐Naive UI Config Provider 全局化配置完全指南主题、国际化、命名空间与组件尺寸Naive UI Config Provider 全局化配置完全指南主题、国际化、命名空间与组件尺寸 n config provider 是 Naive UI前端UI组件DeBERTa-v3-large社区贡献完全指南如何参与模型改进和代码开发DeBERTa v3 large社区贡献完全指南如何参与模型改进和代码开发 欢迎来到DeBERTa v3 large社区贡献指南 作为当前最先进的自然语React-i18next 多命名空间管理国际化策略终极指南React i18next 多命名空间管理国际化策略终极指南 React i18next 是一个强大的国际化解决方案专为React应用程序设计基于i18n前端国际化上一篇终极指南Awesome D3未来5大发展趋势与项目路线图深度解析下一篇2026 年 5 月 Triton 社区例会纪要TileLens 可视化分析、Windows 插件扩展与 Block Pointer 去留之争创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

基础OJ第二天:吃透04-06题,避开多组输入与格式陷阱
基础OJ第二天:吃透04-06题,避开多组输入与格式陷阱

走出新手村的第一步,往往不是会写代码,而是会读题。第二天继续推进基础OJ的04到06题,这个节奏其实非常关键。很多人第一天兴致勃勃刷了前三题,第二天一上来看见题目变长、格式复杂就直接卡住,心态崩一大半。这个阶段真… · 2026/9/24 19:35:10

MySQL CONVERT函数实战:类型转换、隐式转换与索引失效全攻略
MySQL CONVERT函数实战:类型转换、隐式转换与索引失效全攻略

在MySQL里做开发,类型转换是躲不开的活儿。不管是接外部接口、清洗历史数据,还是写报表SQL,总会遇到“明明字段看着是数字,一排序就变成1、10、2”这种糟心事。这时候很多人第一个想到的是CONVERT函数,但真用起来又容易… · 2026/9/24 19:35:10

掌握ROC曲线与PR曲线:分类模型评估关键技巧全解析
掌握ROC曲线与PR曲线:分类模型评估关键技巧全解析

1. 从一次模型评估翻车说起:为什么单看准确率远远不够 我印象特别深,有次给一个信贷风控模型做评测,测试集里坏样本只有3%。模型跑完,准确率98.7%,当时团队里有人差点直接拍板上线。后来我们把预测结果拉出来一看&… · 2026/9/24 19:35:10

MySQL深分页优化实战:从OFFSET慢查询到延迟关联与书签分页
MySQL深分页优化实战:从OFFSET慢查询到延迟关联与书签分页

每次聊到 MySQL 性能优化,"深分页"几乎是必被点名的那个题。后端面试、日常巡检、线上故障排查,撞上它的概率实在太高了。我也记不清有多少次,一边看着慢查询日志里LIMIT 100000, 20这种 SQL,一边跟同事叹气&#xff1a… · 2026/9/24 20:10:06

DataX MySQL批量同步:灵活配置与实战调优指南
DataX MySQL批量同步:灵活配置与实战调优指南

年初接到一个数据迁移需求:几十张业务表要从一套MySQL迁到另一套MySQL,数据量不算变态,单表几万到几百万行都有,但要求能批量处理、可重复执行、中途失败了好定位。我第一反应是写个Java程序循环读再写,但想想断点续传… · 2026/9/24 20:10:06

从阅文到B站,为什么内容平台都在做“一番赏“生意
从阅文到B站,为什么内容平台都在做“一番赏“生意

如果你最近逛过B站的活动页面,或者刷到过阅文旗下IP的周边预售,可能会发现一个共同点:越来越多内容平台,正在把"一番赏"作为衍生品变现的主要形式之一。这不是偶然的选择,而是一整套已经在日本被验证过几十年… · 2026/9/24 20:10:06

基于深度学习的人脸识别实验室自动签到与监控系统全解析
基于深度学习的人脸识别实验室自动签到与监控系统全解析

简介:这是一份基于Python深度学习的实验室自动签到与监控系统完整项目,面向计算机相关专业学生、教师及企业开发者,适合作课程设计、毕业设计或初期项目演示。系统将深度学习用于自动签到识别与实验室实时监控,涵盖数据处理、模型… · 2026/9/24 20:10:00

2026数据治理选型指南:AI原生平台能力分化与落地路径
2026数据治理选型指南:AI原生平台能力分化与落地路径

1. 数据治理的2026分水岭:为什么“AI原生”不再是口号如果你在数据治理这个行当里摸爬滚打了几年,应该有一个明显的体感:2023年之前,大家聊的还是“数据质量怎么提上去”“元数据怎么补全”“血缘怎么画清楚”;到了202… · 2026/9/24 20:10:00

云端GPU推理方案选型指南:托管API、Serverless、容器化与自建集群对比
云端GPU推理方案选型指南:托管API、Serverless、容器化与自建集群对比

1. 从一次线上事故说起:为什么云端推理方案选型不能拍脑袋去年帮一个团队做技术复盘,他们的生成式 AI 产品上线第三天就出了状况。事情本身不复杂:一个面向 C 端用户的文案生成工具,白天流量平稳,晚上八点后突然涌入大… · 2026/9/24 20:10:00

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码