使用 FactoryGirl 在 Ruby 中将工厂创建为不同的类

发布于 2024-12-23 15:53:45 字数 455 浏览 0 评论 0原文

我有一些 ActiveRecord 超类 Product 和一个子类 DiscountedProduct 共享同一个表,并且我有一些想要与子类一起使用的超类工厂。

Factory(:product).class #=> Product

我试图找到的是以下内容的简写:

DiscountedProduct.create(Factory.build(:product).attributes)

注意: 我不使用 Factory.attributes_for 来构建所需的关联。

  • FactoryGirl v2.3.2
  • Rails 3.0.4

I have some ActiveRecord superclass Product and a subclass DiscountedProduct that share the same table and I have some factories for the superclass that I want to use with the subclass.

Factory(:product).class #=> Product

What I am trying to find is a shorthand for:

DiscountedProduct.create(Factory.build(:product).attributes)

NOTICE:
I don't use Factory.attributes_for so that the needed associations get built.

  • FactoryGirl v2.3.2
  • Rails 3.0.4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野の 2024-12-30 15:53:45

嗯,看来factory_girl 很好地支持了继承。

您可以通过以下任一方式定义工厂:

  • 作为嵌套定义

    工厂:产品做
      name '产品名称'
    
      工厂:discounted_product 做
        折扣真实
      结尾
    结尾
    
  • 或作为链接定义

    工厂:折扣产品:父=> :产品做
      批准真实
    结尾
    

Well, seems factory_girl supports quite well the inheritance.

You can define your factory either way :

  • As a nested definition

    factory :product do
      name 'Product name'
    
      factory :discounted_product do
        discounted true
      end
    end
    
  • or as a linked definition

    factory :discounted_product :parent => :product do
      approved true
    end
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文