我想弄清楚为什么accepts_nested_attributes_for
在收到这样的哈希值时不会销毁记录:
{project_parcels_attributes"=>[{"parcel_id"=>"680060", "_destroy"=>"1"}, {"parcel_id"=>"680088"}]}
使用背景如下。有一个项目模型:
class Project < ActiveRecord::Base
has_many :project_parcels
accepts_nested_attributes_for :project_parcels, allow_destroy: true
end
class ProjectParcels < ActiveRecord::Base
belongs_to :project
belongs_to :parcel
validates :parcel_id, uniqueness: {scope: :project_id}
end
然后我从这样的表格中调用它:
@project.update_attributes({"project_parcels_attributes"=>[{"parcel_id"=>"680060", "_destroy"=>"1"}, {"parcel_id"=>"680088"}]})
然而,它并没有奏效。验证会阻止记录被销毁。但是当我删除验证时,记录会多次添加。
答案 0 :(得分:1)
你应该用hidden_field标签添加子对象的id
<%= f.hidden_field :id %>
然后使用id:
进行更新{project_parcels_attributes"=>[{id: an_id, "parcel_id"=>"680060", "_destroy"=>"1"}, {id: an_id, "parcel_id"=>"680088"}]}