1

プロジェクトに多くのステップがあるように、「プロジェクト」と「ステップ」の 2 つのレール モデルを関連付けています。ステップには project_id が必要であり、プロジェクトには少なくとも 1 つのステップが有効である必要があります...再帰の問題なしにファクトリーガールでこれを作成する方法を考えています。

現在、私の工場は次のようになっています。

factory :project do
  #...
  steps { |s| [s.association(:step)] }
end

factory :step do
  #...
  association :project
end

もちろん、再帰的な関連付けにより、「スタックレベルが深すぎます」というエラーが返されます。問題は、両方の値を入力する必要があることです。

任意の提案をいただければ幸いです。

4

1 に答える 1

0

これがあなたのモデルであると仮定します:

class Project < ActiveRecord::Base
  has_many :steps
end

class Steps < ActiveRecords::Base
  belongs_to :project
  validates :steps, :presence => true
end

これは工場として機能する可能性があると思います:

factory :project do
  after(:build) do |project|
    project.steps << FactoryGirl.create(:step)
  end
end

factory :step do
end

そして、次のように project.spec.rb を使用できます。

it "must have a step to be valid" do
  expect(FactoryGirl.create(:project)).to be_valid
end

腰から撮っているので、うまくいかなかったらごめんなさい。いずれにせよ、これが一般的な考え方だと思います。

于 2014-02-28T00:10:13.640 に答える