关于 seed-database
面向 Rails 开发的种子数据与测试场景管理技能,涵盖可重复执行的种子、按环境隔离数据、FactoryBot、凭据安全和验证步骤。
主要功能
- 01使用 find_or_create_by! 编写可重复种子
- 02按环境限定非生产数据
- 03使用 FactoryBot 设置测试场景
- 04避免硬编码凭据
- 05用 Rails 命令验证种子数据
适用场景
- 01为 Rails 应用添加静态参考记录
- 02用工厂设置测试数据
- 03创建不影响生产环境的开发数据
- 04确认重复运行种子不会产生重复记录
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ igmarin/ rails-agent-skills --skill seed-database安装后在 Claude Code 中输入/seed-database确认已加载。
附带文件EXAMPLES.mdreferences/workflow.md
详细介绍
种子数据库
有效管理开发和测试数据。
快速参考
| 用途 | 解决方案 |
|---|---|
| 静态参考数据 | 使用 find_or_create_by! 的 db/seeds.rb |
| 测试场景 | spec/factories/ 中的 FactoryBot |
| 复杂关系 | 两者结合使用 |
HARD-GATE
NEVER commit production data to seeds
ALWAYS use factories for test-specific scenarios
ALWAYS make seeds idempotent (can run multiple times safely)
NEVER hardcode credentials (passwords, API keys, secrets) in seeds, factories, or examples
- Use ENV variables (e.g., ENV.fetch('DEFAULT_SEED_PASSWORD')) or SecureRandom.hex(16) for non-production data
- Use `rails credentials:edit` to manage production secrets, never commit them in code
核心流程
- 编写幂等种子 — 使用
find_or_create_by!,确保重复运行安全无虞。 - 按环境限定范围 — 使用
Rails.env检查保护非生产数据。 - 运行种子 — 执行
rails db:seed(或使用rails db:setup创建全新数据库)。 - 验证幂等性 — 再次运行
rails db:seed,确认没有重复数据或错误。 - 验证数据 — 打开
rails console,抽查预期记录是否存在且属性正确。
最简内联示例
一个可直接复制粘贴的 db/seeds.rb,涵盖幂等性、环境限定范围和安全凭据:
# db/seeds.rb
# Static reference data — safe to run repeatedly
Role.find_or_create_by!(name: 'admin') do |r|
r.description = 'Full system access'
end
Role.find_or_create_by!(name: 'member') do |r|
r.description = 'Standard user access'
end
# Development-only seed data — never runs in production
if Rails.env.development?
User.find_or_create_by!(email: '[email protected]') do |u|
u.role = Role.find_by!(name: 'admin')
u.password = ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16))
end
end
关于 FactoryBot 工厂定义和更复杂的关系模式,请参阅 EXAMPLES.md。
扩展资源(渐进式披露)
仅在需要其特定内容时才加载这些文件:
- EXAMPLES.md — 当你需要包含环境特定模式和 FactoryBot 工厂定义的完整种子示例时使用
- references/workflow.md — 在实现复杂种子工作流或依赖迁移的种子数据时使用
输出风格
- 使用符合 Rails 惯例的种子模式。
- 清晰地组织工厂结构。
- 无条件遵守 HARD-GATE 中的凭据和幂等性规则。
- 包含验证命令:
rails db:seed、第二次幂等性运行以及rails console抽查。 - 语言 — 除非明确要求其他语言,否则必须使用英语。
集成
| 技能 | 何时串联 |
|---|---|
| write-tests | 设置测试场景时 |
| review-migration | 确保数据库 schema 对齐时 |
评论
支持 Markdown