courses · v1.0.0 · ComMun
课程插件:课程方向、讲师、课程/章节/课时管理,前台课程学习、观看权限与课程评价,支持本地视频与腾讯云 VOD 播放。
将原核心内置的课程系统拆分为独立插件,支持安装 / 启用 / 禁用 / 卸载。
plugins/courses/
├── plugin.json # 插件元数据
├── hooks.json # 钩子注册(前台导航 / 后台导航)
├── init.rb # 插件入口
├── lib/
│ ├── nav_item.rb # 前台导航注册
│ └── admin_nav.rb # 后台导航注册(课程管理分组)
├── app/
│ ├── models/ # Course / CourseChapter / CourseLesson / CourseDirection /
│ │ # CoursePermission / CourseReview / Instructor
│ ├── controllers/ # 前台 CoursesController + 后台 7 个管理控制器
│ └── views/ # 前后台视图
└── db/
├── migrate/ # 12 个迁移(courses / course_directions / course_chapters /
│ # course_lessons / instructors / course_permissions / course_reviews)
└── seeds.rb # 示例数据(课程方向 + 课程/章节/课时)
数据表迁移(新环境需要,已有环境的 course_* / instructors 表已存在则跳过):
bin/rails plugins:migrate_courses
安装并启用插件(管理后台「扩展管理 → 插件管理」点击扫描后启用,或命令行):
bin/rails plugins:install_courses
bin/rails plugins:enable_courses
初始化示例课程数据(可选):
bin/rails plugins:seed_courses
/courses 重定向回首页;后台直接访问课程管理地址同样被拦截config/routes.rb 中,由控制器内 Plugin.enabled?("courses") 判定生效course_permissions)挂接在 User 上;核心 User#can_watch_course? 方法保留在用户模型中TencentVodService(视频上传/播放)、TencentCosService(封面/头像存储)、ActiveStoragevod_controller.rb 保留在核心,内部按插件启用状态判定| 版本 | 发布时间 | 大小 | SHA256 |
|---|---|---|---|
| v1.0.0 最新 | 2026-10-20 09:18 | 56.8 KB | 948263b120bb92d2… |