0

質問: 1 つのフィールドにシーケンスと一時属性の両方を使用するにはどうすればよいですか?

背景:私は名前を持つ工場を持っています。名前は一意に保つためのシーケンスです。ただし、いくつかの仕様では、私が選択した名前を設定する必要があるため、期待して予測できます。これは Rails プロジェクトではありません。

私の頭の中では のように見えname {attribute_from_create_call||FactoryGirl.generate :name}ます。しかし、私は create メソッドに与える属性を取得する方法がわかりません

工場:

FactoryGirl.define do
  sequence :name do |n|
    'Testing Bridge '+n.to_s
  end

  factory :historical_bridge do
    name {FactoryGirl.generate :name}
  end
end

工場の使用法:FactoryGirl.create :historical_bridge, name: 'Bridge from '+Time.now.to_s

4

2 に答える 2

1

FactoryGirlを使用して、シーケンスを使用して属性のハッシュを作成し、必要なハッシュへの変更をマージできます。

new_name = 'Bridge from '+Time.now.to_s
attr = FactoryGirl.attributes_for(:historical_bridge).merge(:name => new_name)

次に、これらのカスタム属性を使用してオブジェクトを作成するようなことを行うことができます。

HistoricalBridge.create(attr)
于 2013-02-08T18:37:40.437 に答える
0

シーケンスの代わりに定義済みの名前を使用するべきではないと思いますが、次のようなものを確認してください。

let(:bridge) { create :historical_bridge }

it { HistoricalBridge.something.name.should == bridge.name }
于 2013-02-08T18:46:38.393 に答える