0

次のような MenuHeader という名前のクラスがあります。

class MenuHeader < ActiveRecord::Base
  acts_as_tree :parent_id
  belongs_to :menu

いくつかのレベルの menu_headers を作成したいのですが、これを行う方法がわかりません:

FactoryGirl.define do
  factory :menu_header do
    name "my menu header"
    menu
    after(:create) { |menu_header| do_something_else_to(user) }
  end
end

:menu_header2 を作成しますか、それとも上記を拡張する方法がありますか。:parent_id を最近作成された menu_header の値に設定するにはどうすればよいですか?

どうも

4

1 に答える 1

0

を使用して、さまざまなレベルの menu_header ファクトリとbuildその子を作成しafter(:build)ます。ところでafter :build、テスト用の非永続オブジェクトを簡単に作成できるので、私は好きです。

FactoryGirl.define do
  factory :menu_header do
    name "my menu header"
    menu

    factory :menu_header_level1 do
      after(:build) do |m|
        m.children << FactoryGirl.build(:menu_header, :name => 'level0 submenu0', :parent => m)
        m.children << FactoryGirl.build(:menu_header, :name => 'level0 submenu1', :parent => m)
      end
    end

    factory :menu_header_level2 do
      after(:build) do |m|
        m.children << FactoryGirl.build(:menu_header_level1, :name => 'level1 submenu0', :parent => m)

      end
    end   
  end
end
于 2012-09-13T07:26:56.280 に答える