ShallowAttributes 开源项目教程
项目介绍
ShallowAttributes 是一个简单且轻量级的 Ruby 库,旨在提供类似于 Virtus API 的解决方案。它专注于性能和易用性,使得数据对象的属性定义和管理变得简单、快速且易于理解。ShallowAttributes 支持多种数据类型的属性定义,包括字符串、整数、日期等,并且提供了灵活的属性值转换功能。
项目快速启动
安装
首先,将以下代码添加到你的 Gemfile 中:
gem 'shallow_attributes'
然后执行:
bundle install
或者手动安装:
gem install shallow_attributes
基本使用
以下是一个简单的示例,展示如何使用 ShallowAttributes 定义和使用类属性:
require 'shallow_attributes'
class User
include ShallowAttributes
attribute :name, :string
attribute :age, :integer
attribute :birthday, :datetime
end
user = User.new(name: 'John Doe', age: 30, birthday: '1990-01-01')
puts user.name # => 'John Doe'
puts user.age # => 30
puts user.birthday # => 1990-01-01 00:00:00 +0000
应用案例和最佳实践
默认值
你可以为属性设置默认值:
class User
include ShallowAttributes
attribute :name, :string, default: 'Unknown'
attribute :age, :integer, default: 18
end
user = User.new
puts user.name # => 'Unknown'
puts user.age # => 18
强制属性
你可以设置强制属性,如果未提供值,将抛出异常:
class User
include ShallowAttributes
attribute :name, :string, mandatory: true
end
user = User.new(name: nil) # => raises ShallowAttributes::MissingAttributeError
自定义转换
你可以为属性定义自定义转换逻辑:
class User
include ShallowAttributes
attribute :age, :integer do |value|
value.to_i + 10
end
end
user = User.new(age: '20')
puts user.age # => 30
典型生态项目
ShallowAttributes 可以与其他 Ruby 库和框架结合使用,例如:
- ActiveModel: 与 ActiveModel 结合,提供更强大的模型验证和持久化功能。
- Dry-Types: 使用 Dry-Types 提供更丰富的数据类型定义和验证。
通过这些组合,你可以构建更复杂和强大的数据模型,同时保持代码的简洁和可维护性。
以上是 ShallowAttributes 开源项目的详细教程,希望对你有所帮助。更多详细信息和高级用法,请参考项目的 GitHub 仓库。