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 escalated
2

运行生成器

rails generate escalated:install && rails db:migrate
3

挂载引擎

将 `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
)

准备好为 Rails 应用添加工单了吗?

Escalated 是开源、自托管的,设计得像 Rails 应用的原生部分。