рельсы родословной вложенной формы - PullRequest
5 голосов
/ 09 июня 2011

Я только начал использовать Ancestry вместо awesome_nested_set, и я хотел бы создать вложенную форму, чтобы я мог создать родительскую учетную запись и множество дочерних учетных записей в одной форме.Кажется, проблема в том, что Ancestry не позволяет вам создать дочернего элемента для нового родителя.

В awesome_nested_set я мог бы сделать это в консоли rails

a = Account.new
a.children.build

Когда я набираю.children Я вижу там этого нового ребенка, хотя родительский аккаунт еще не создан.Это позволило мне отобразить форму с родительским аккаунтом и несколькими пустыми дочерними элементами, а затем при отправке я просто проигнорировал бы все пустые дочерние элементы и создал бы целую партию.

Если я попытаюсь сделать то же самое, используя родословную, я получаюследующая ошибка:

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>'

Это ограничение родословной?Есть ли другой способ создания вложенной формы с использованием предков?

1 Ответ

5 голосов
/ 16 июня 2011

Сегодня столкнулся с той же проблемой - я считаю, что это ограничение происхождения , глядя на код (оно вызывает эту ошибку if new_record?).

Хотя это не идеально, сейчас я использую children.create вместо children.build.

...