Ruby on rails 嵌套表单子项仅在父项更改时更新

Ruby on rails 嵌套表单子项仅在父项更改时更新,ruby-on-rails,ruby-on-rails-3,nested-forms,Ruby On Rails,Ruby On Rails 3,Nested Forms,(10秒)您可以看到,嵌套属性仅在其父模型发生更改时才会更新 使用rails 3.0.0.beta和 模型和表格摘要: class Project < ActiveRecord::Base has_many :tasks accepts_nested_attributes_for :tasks end class Task < ActiveRecord::Base belongs_to :project has_many :assignments accepts

(10秒)您可以看到,嵌套属性仅在其父模型发生更改时才会更新

使用rails 3.0.0.beta和

模型和表格摘要:

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project
  has_many :assignments
  accepts_nested_attributes_for :assignments
end

class Assignment < ActiveRecord::Base
  belongs_to :task
end


form_for(@project) do |f|

  Project: f.text_field :name

  f.fields_for :tasks do |task_form|
    Task: task_form.text_field :name

    task_form.fields_for :assignments do |assignment_form|
      Assignment: assignment_form.text_field :name
    end
  end

  f.submit
end
class项目
EDIT2:同样的代码在Rails 2.3.5中工作得非常好。这似乎是测试版中的一个bug

编辑:我在应用程序中编写了一个测试来模拟这一点。这是结果

  test "should update empresa" do
    addr = empresas(:ufba).address
    put_with users(:s_one), :update, :id => empresas(:ufba).to_param,
             :empresa => { :address_attributes => {:id => empresas(:ufba).address.to_param,
                                                   :city => "Feira de Santana"}}
    assert_not_nil assigns(:empresa)
    assert_not_same addr, assigns(:empresa).address, "Endereco nao foi atualizado"
    assert_redirected_to empresa_path(assigns(:empresa))
  end

它运行时没有错误。

我一直在控制台中进行测试,仅适用于Rails 2.3.5,在Rails 3.0上,分配没有更新。在Rails跟踪器上打开了一个记录单,并添加了失败的单元测试以演示:我试图在Rails beta中查找代码,但仍然找不到产生错误的代码的差异。