首页
/ 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
267
55
国产编程语言蓝皮书国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区
65
17
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
196
45
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
53
44
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
268
69
qwerty-learnerqwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
333
27
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
896
0
advanced-javaadvanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
419
108
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
144
24
HarmonyOS-Cangjie-CasesHarmonyOS-Cangjie-Cases
参考 HarmonyOS-Cases/Cases,提供仓颉开发鸿蒙 NEXT 应用的案例集
Cangjie
58
4