2011-06-09 97 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