首页
/ ActiveEnum 技术文档

ActiveEnum 技术文档

2024-12-14 06:20:38作者:瞿蔚英Wynne

1. 安装指南

支持的 Ruby 版本

ActiveEnum 支持 Ruby 2.0 及以上版本。

支持的 Rails 版本

从 gem 版本 1.0 开始,ActiveEnum 仅支持 Rails 4 及以上版本。如果你需要 Rails 3 的兼容性,请查看 0.9 分支

安装步骤

  1. 使用 gem 安装 ActiveEnum:

    gem install active_enum
    
  2. 在 Gemfile 中添加以下内容:

    gem 'active_enum', '~> 1.0.0'
    
  3. 生成配置初始化文件:

    rails generate active_enum:install
    

2. 项目的使用说明

定义枚举类

你可以通过以下几种方式定义枚举类:

使用显式的 ID 和名称

class Sex < ActiveEnum::Base
  value :id => 1, :name => 'Male'
  value :id => 2, :name => 'Female'
end

使用 ID 作为键

class Sex < ActiveEnum::Base
  value 1 => 'Male'
  value 2 => 'Female'
end

使用隐式的 ID 值

class Sex < ActiveEnum::Base
  value :name => 'Male'
  value :name => 'Female'
end

枚举类的使用

Sex[1]        # => 'Male'
Sex['Male']   # => 1
Sex[:male]    # => 1
Sex.meta(1)   # => { :symbol => '♂' }
Sex.to_select # => [['Male', 1], ['Female',2]] for select form helpers

排序

你可以通过 order 方法定义返回值的排序方式:

class Sex < ActiveEnum::Base
  order :asc

  value :id => 1, :name => 'Male'
  value :id => 2, :name => 'Female'
end

枚举模型属性

使用枚举来枚举 ActiveRecord 模型属性:

class User < ActiveRecord::Base
  enumerate :sex, :with => Sex
end

验证

你可以在验证中使用枚举:

class User < ActiveRecord::Base
  enumerate :sex, :with => Sex

  validates_inclusion_of :sex, :in => Sex
end

属性值查找

访问枚举值和枚举类:

user = User.new
user.sex = 1
user.sex          # => 1

user.sex(:id)     # => 1
user.sex(:name)   # => 'Male'
user.sex(:enum)   # => Sex
user.sex(:symbol) # => ♂  ( Can use any meta data key )

布尔检查

检查属性值是否匹配特定的枚举值:

user.sex?(:male)    # => true
user.sex?(:Male)    # => true
user.sex?('Male')   # => true
user.sex?('Female') # => false

枚举查找

在类上提供一个方便的方法来获取任何枚举属性的枚举类:

User.active_enum_for(:sex) # => Sex

3. 项目 API 使用文档

枚举类的定义

  • value(id: 1, name: 'Male'): 定义枚举值。
  • order(:asc): 定义枚举值的排序方式。

枚举类的使用

  • Sex[1]: 根据 ID 获取枚举值。
  • Sex['Male']: 根据名称获取枚举值。
  • Sex.meta(1): 获取枚举值的元数据。
  • Sex.to_select: 生成用于表单选择的选项。

模型属性的枚举

  • enumerate :sex, :with => Sex: 将枚举类与模型属性关联。
  • validates_inclusion_of :sex, :in => Sex: 在验证中使用枚举。

属性值查找

  • user.sex(:id): 获取属性值的 ID。
  • user.sex(:name): 获取属性值的名称。
  • user.sex(:enum): 获取属性值的枚举类。

布尔检查

  • user.sex?(:male): 检查属性值是否匹配特定的枚举值。

枚举查找

  • User.active_enum_for(:sex): 获取模型属性的枚举类。

4. 项目安装方式

通过 gem 安装

gem install active_enum

在 Gemfile 中添加

gem 'active_enum', '~> 1.0.0'

生成配置初始化文件

rails generate active_enum:install

通过以上步骤,你可以成功安装并使用 ActiveEnum 项目。

热门项目推荐
相关项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
611
115
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
286
79
mdmd
✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、色盘取色、多图上传、一键下载文档、自定义 CSS 样式、一键重置等特性
Vue
112
25
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
60
48
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
45
29
go-stockgo-stock
🦄🦄🦄AI赋能股票分析:自选股行情获取,成本盈亏展示,涨跌报警推送,市场整体/个股情绪分析,K线技术指标分析等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。
Go
1
0
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
205
58
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
383
36
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
182
44
frogfrog
这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。
Java
8
0