ruby-on-rails - FactoryGirl 与协会

标签 ruby-on-rails ruby factory-bot

我有 2 个模型,产品和类别。 产品具有 category_id 属性。所以,Product属于Category,Category有很多Products。

<!-- language: rb -->
class Product < ActiveRecord::Base
  belongs_to :category
  validates :category, presence: true
end

class Category < ActiveRecord::Base
  has_many :products
end

如何为这两种模型定义工厂(FactoryGirlrails)?如何对产品模型执行此操作特别有趣。

最佳答案

您可能想要使用两种方案。

如果您不需要与产品关联的特定类别:

FactoryGirl.define do
  factory :category do
    # category fields
  end
  factory :product do
    # other product fields here
    category
  end
end

然后您可以create(:product),它会在创建时获得分配给它的类别。

如果您需要在产品中重复使用已知类别:

在这种情况下,您需要显式创建对象。您可以使用上面相同的工厂,但创建它们如下:

category = create(:category)
product = create(:product, category: category)

这样您就可以为多个产品重复使用该类别,或分别操作这两个产品。

关于ruby-on-rails - FactoryGirl 与协会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511609/

相关文章:

ruby - 为什么危险的方法不适用于 Ruby 中 String 的字符元素?

mysql - Rails Server 挂起,Rake db.migrate 挂起,似乎卡在数据库服务器连接上,但我可以毫无问题地连接到数据库服务器

ruby - 如何使用 FactoryBot 定义关联工厂?

ruby - 如何在 Fabrication 中对属性进行分组,就像在 Factory_Girl 中使用特征一样

mysql - 由于内存限制,无法通过隧道连接到 vmc mysql 服务

ruby-on-rails - whkpdf 在 rails 中给出 ActionController::UnknownFormat 错误

ruby-on-rails - Rspec测试Rails重定向中的test.host

ruby-on-rails - 如果参数为空,如何从数据库 Rails 设置默认值

ruby-on-rails - 测试类级别方法是否更改另一个类的属性

ruby-on-rails - 作为人类,我可以查看 RSpec 渲染的 View 吗?如果可以,如何查看?