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 回答