Ruby on Rails
基于 Rails 惯例运行的支持系统
ActiveRecord 模型、生成器、引擎挂载,以及你的团队已经熟悉的 Ruby 模式。Escalated 是一个以 gem 形式发布的 Rails 引擎。
终端
$ bundle add escalated为什么选择 Escalated
为什么 Rails 选择 Escalated
ActiveRecord 模型
工单、回复、标签和活动都是 ActiveRecord 模型。像应用中的任何模型一样使用作用域、关联和验证。
Rails 生成器
使用熟悉的 `rails generate` 命令生成迁移、安装配置文件和脚手架视图。无需手动设置。
引擎架构
作为 Rails 引擎挂载在 `config/routes.rb` 中。隔离 Escalated 路由、控制器和视图,同时共享你的认证栈。
开始使用
工作原理
1
安装 Gem
bundle add escalated2
运行生成器
rails generate escalated:install && rails db:migrate3
挂载引擎
将 `mount Escalated::Engine => '/support'` 添加到路由即可上线。
功能
为 Rails 生态系统而建
ActiveRecord 关联
工单属于用户,拥有多个回复,通过多态关联连接。使用 Arel 或作用域查询。
ActiveJob 集成
邮件通知和 Webhook 分发在 ActiveJob 上运行。使用应用已有的 Sidekiq、Resque 或任何后端。
Pundit & CanCanCan 支持
授权与标准 Ruby 授权库配合使用。控制对工单、回复和管理功能的访问。
ActiveSupport 回调
每个工单操作触发回调。挂载到 after_create、after_update 和自定义生命周期事件来构建工作流。
Rack 中间件
将你现有的 Rack 中间件应用到 Escalated 路由。认证、速率限制和租户范围限定自然工作。
FactoryBot 工厂
自带工单、回复和用户的 FactoryBot 工厂。使用熟悉的模式编写 RSpec 或 Minitest 测试。
查看实际效果
几行 Ruby 代码为你的应用添加完整的支持系统。
Ruby
# config/routes.rb Rails.application.routes.draw do mount Escalated::Engine => '/support' end # app/models/user.rb class User < ApplicationRecord include Escalated::HasTickets end # Anywhere in your application ticket = user.tickets.create!( subject: 'Need help with billing', priority: :high ) ticket.replies.create!( body: "We've updated your invoice.", user: agent )