5

Rails アプリのフィクスチャの代わりとして Factory Girl を実装しています。関連を使用して表現しようとしているテーブルがいくつかあります。ただし、関連を定義するだけでなく、親から子ファクトリの属性にアクセスする必要もあります。

以下は、私がやろうとしていることの例です。

  • Factory :foo_bar は、Factory :bar に関連付けられている Factory :foo に関連付けられています。
  • :foo_bar から、:foo と :bar の両方の属性にアクセスしようとしています。

サンプルは次のとおりです。

Factory.define :bar do |e|
  e.name          "Bar"
end

Factory.define :foo do |e|
  e.bar         {|b| b.association(:bar)}
end

Factory.define :foo_bar do |b|
  f = b.association(:foo)
  b.foo_id      foo.id
  b.bar_id      foo.bar_id
end

私は多くのチュートリアルやその他の質問を経験しましたが、これを行う方法の例を見たことがありません. 同じ結果を得るためのアイデアや他の方法はありますか?

ありがとう!


編集

いくつかの質問に基づいて、最初に含める必要があったいくつかの説明を以下に示します...

:foo_bar は結合テーブルではなく、独自の他の属性を持つモデルです。

これは私が実際に達成しようとしていることです:

  • :foo_bar に関連付けられた Factory を作成させる
  • 次に、その関連付けられたファクトリーに関連付けられたファクトリーを作成させます
  • (これは私が苦労している要素です) :foo_bar で最下位レベルの Factory から属性にアクセスします

したがって、:foo_bar > :foo > :bar の場合、:foo_bar から :bar の ID を取得しようとしています。

4

2 に答える 2

4

次のような状況を処理するために after_build フックを使用しています。

Factory.define :foo do |f|
  f.name "Foo"
  f.association :foo
  f.after_build do |obj|
    obj.foo_bar = obj.foo.bar
  end
end
于 2010-11-05T15:40:54.440 に答える
0

モデル コードがないと、どのように見えるかわかりませんか?

しかし、多分このようなものですか?

Factory.define :bar do |f|
    f.name "Bar"
    f.association :foo_bar  
end

Factory.define :foo do |f|
    f.name "Foo"
    f.association :foo_bar  
end

Factory.define :foo_bar do |f|
    f.association :foo
    f.association :bar      
end
于 2010-09-05T15:32:11.890 に答える