You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FactoryBot中用同一工厂实现两个不同名称

复用FactoryBot中Reply与Comment工厂的代码

在将Reply模型迁移至Comment模型的过渡阶段,要同时保留:reply和:comment工厂且两者生成内容一致,你可以利用FactoryBot的工厂继承特性消除代码重复,无需重复编写相同的属性配置。

修改后的代码:

FactoryBot.define do
  factory :reply do
    sequence(:text) { |n| "Reply #{n}" }
    subject { create(:annotation) if subject_id.nil? && subject_type.nil? }
    user_id { create(:user).id }
  end

  # 继承:reply工厂的所有配置,指定类为Reply(迁移完成后可改为Comment)
  factory :comment, class: 'Reply', parent: :reply do
    # 无需重复定义属性,除非需要覆盖特定配置
  end
end

说明:

  • parent: :reply 让:comment工厂完全复用:reply的所有属性逻辑,后续修改:reply的配置时,:comment会自动同步,减少维护成本。
  • 当前:comment工厂指定class: 'Reply'是因为迁移未完成,等后续替换为Comment模型后,只需将这里的class改为Comment即可,属性部分无需改动。

内容的提问来源于stack exchange,提问作者pixelearth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:36