我有一个名为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的值?
THX
答案 0 :(得分:0)
我会使用build
创建不同级别的menu_header工厂和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