class Node belongs_to :parent,:class_name =>Node has_many :children,:class_name =>Node :foreign_key =>:parent_id end
end
可以看出,我使用的是一个自关联表,通过自己:parent_id这个键将本表自己关联起来,
现在介绍怎么用factory_girl模拟这样的模拟结构
首先介绍从叶子结点像root结点一个一对一的模型结构
代码如下
FactoryGirl.define do factory :node do title "XXXXX" factory :node_leaf ,:class => :node do
association :parent,:factory =>:node end end
通过association这个值,我们将node与node_leaf做成一对一关联
然后我们再构建root结点向leaf结点一个一对多的情况
FactoryGirl.define do factory :node do title "XXXXX" factory :node_root,:class => :node do after_create do |node| node.children <<FactoryGirl.create(:node,:parent => node) node.children <<FactoryGirl.create(:node,:parent => node) node.children <<FactoryGirl.create(:node,:parent => node) end end end end