ActiveRecord-PG-Enum 使用教程
目录结构及介绍
activerecord-pg_enum/
├── Gemfile
├── Gemfile.lock
├── LICENSE.txt
├── README.md
├── Rakefile
├── activerecord-pg_enum.gemspec
├── app
│ └── models
│ └── contact_info.rb
├── bin
│ ├── console
│ └── setup
├── config
│ └── initializers
│ └── pg_enum.rb
├── db
│ └── migrate
│ └── 20230101000000_create_enum.rb
├── lib
│ ├── activerecord-pg_enum
│ │ ├── version.rb
│ │ └── pg_enum.rb
│ └── activerecord-pg_enum.rb
├── spec
│ ├── contact_info_spec.rb
│ └── spec_helper.rb
主要目录和文件介绍
- Gemfile: 定义了项目所需的依赖包。
- LICENSE.txt: 项目的许可证文件。
- README.md: 项目的说明文档。
- Rakefile: 定义了Rake任务。
- activerecord-pg_enum.gemspec: 项目的gemspec文件。
- app/models/contact_info.rb: 示例模型文件,展示了如何使用PGEnum。
- bin/console: 用于启动项目的控制台。
- config/initializers/pg_enum.rb: 项目的初始化配置文件。
- db/migrate/20230101000000_create_enum.rb: 数据库迁移文件,用于创建枚举类型。
- lib/activerecord-pg_enum/version.rb: 定义了项目的版本号。
- lib/activerecord-pg_enum/pg_enum.rb: 核心库文件,实现了PGEnum的功能。
- spec/contact_info_spec.rb: 测试文件,用于测试PGEnum的功能。
项目的启动文件介绍
项目的启动文件主要是bin/console
,它用于启动项目的控制台,方便开发者进行调试和测试。
#!/usr/bin/env ruby
require_relative '../config/environment'
ActiveRecord::Base.logger = Logger.new(STDOUT)
puts "Loading development environment (Rails #{Rails.version})"
require 'irb'
IRB.start
启动文件说明
- require_relative '../config/environment': 加载项目的环境配置。
- ActiveRecord::Base.logger = Logger.new(STDOUT): 设置ActiveRecord的日志输出到控制台。
- puts "Loading development environment (Rails #{Rails.version})": 输出当前加载的环境信息。
- require 'irb' 和 IRB.start: 启动IRB控制台,方便开发者进行交互式调试。
项目的配置文件介绍
项目的配置文件主要位于config/initializers/pg_enum.rb
,它用于初始化PGEnum的功能。
# config/initializers/pg_enum.rb
require 'activerecord-pg_enum'
ActiveRecord::Base.send(:include, PGEnum)
配置文件说明
- require 'activerecord-pg_enum': 加载PGEnum库。
- ActiveRecord::Base.send(:include, PGEnum): 将PGEnum模块包含到ActiveRecord::Base中,使其可以在所有模型中使用。
通过以上配置,开发者可以在模型中使用PGEnum功能,例如:
class ContactInfo < ActiveRecord::Base
include PGEnum(contact_method: %w[Email SMS Phone])
end
这样就可以在模型中定义和使用PostgreSQL的枚举类型。