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 レール) を定義するにはどうすればよいですか? Product モデルでこれを行う方法は特に興味深いです。

4

2 に答える 2

3

使用できるシナリオは 2 つあります。

製品に関連付けられた特定のカテゴリが必要ない場合:

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)

このようにして、複数の製品のカテゴリを再利用したり、2 つを個別に操作したりできます。

于 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 :productsこの場合、モデルの内部を忘れないでくださいCategories

于 2013-01-24T22:10:06.063 に答える