2011-06-09 98 views
5

我剛剛開始使用Ancestry而不是awesome_nested_set,我想創建一個嵌套窗體,以便我可以在一個窗體中創建一個父帳戶和許多子帳戶。問題似乎是,祖先不允許你爲新父母創造一個孩子。鐵軌祖先嵌套形式

在awesome_nested_set當我鍵入a.children我可以看到,新的孩子,即使我的賬戶父尚未創建有我能做到這一點的軌道控制檯

a = Account.new 
a.children.build 

。這使我可以用父母賬號和幾個空白的孩子來顯示一個表格,然後在提交時我會忽略任何空白的孩子並創建整個地段。

如果我嘗試做使用相同的血統,我得到了以下錯誤:

a=Account.new 
a.children 
Ancestry::AncestryException: No child ancestry for new record. Save record before performing tree operations. 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/ancestry-1.2.4/lib/ancestry/instance_methods.rb:62:in `child_ancestry' 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/ancestry-1.2.4/lib/ancestry/instance_methods.rb:132:in `child_conditions' 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/ancestry-1.2.4/lib/ancestry/instance_methods.rb:136:in `children' 
    from (irb):8 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start' 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start' 
    from /home/map7/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:23:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

這是祖先的限制? 我有一種不同的方式可以使用祖先創建一個嵌套表單嗎?

回答

5

今天遇到同樣的問題 - 我相信它是一個limitation of ancestry,看着代碼(它引發了這個錯誤if new_record?)。

雖然它不是理想的,但此刻我使用的是children.create而不是children.build

+0

是的,這並不理想。由於這個問題,以及它不能很好地與思維 - 獅身人面像和多維哈希分頁看起來不可能,我回到了真棒嵌套集。我喜歡乾淨的祖先,這對於簡單的事情會有好處,但這不適合我目前的項目。 – map7 2011-06-17 04:16:04

+0

我遇到了試圖用FactoryGirl編寫測試的相同問題。對不起殭屍這個問題,但我認爲這可能是有趣的一些。 – IAmNaN 2012-04-26 23:12:21