2

我有 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

如何为两个模型定义工厂(FactoryGirl rails)?特别有趣的是如何为产品模型执行此操作。

4

2 回答 2

3

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

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

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)

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

于 2013-01-24T22:07:49.173 回答
1

如果你使用 Mongodb,你可以在你的 Factory 中嵌入数据。例如 :

factory :category do
  name "My Category"
  product {{
    "name" => "My product",
    "price" => "12"
  }}
end

在这种情况下,不要忘记accepts_nested_attributes_for :productsCategories模型内部。

于 2013-01-24T22:10:06.063 回答