如何删除表及其子表中的记录?

时间:2015-06-23 10:48:25

标签: ruby-on-rails

我想创建一个链接来删除记录及其在外表中的子记录。 我的模型是这样的:

class Cv < ActiveRecord::Base
  has_many :formation
end

class Formation < ActiveRecord::Base
  belongs_to :cv
  validates :cv_id, presence: true
end

在我的索引视图中我有:

<%- @cv.each do |p| -%>
          <%= link_to p.nom, cvsindex2_path(p) %>
          <%= link_to 'delete', cvsdestroy_path(p) %></br>
<%- end -%>

我的路线:

 cvsdestroy DELETE /cvs/:id(.:format) 

我该怎么做? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

如果要在关系中添加依赖性破坏,它也将从外键表中删除所有相关记录。

class Cv < ActiveRecord::Base
  has_many :formation, dependent: destroy
end

答案 1 :(得分:0)

您需要将dependent: :destroy添加到formation模型中才能删除相关记录。

class Formation < ActiveRecord::Base
  belongs_to :cv, dependent: :destroy
  validates :cv_id, presence: true
end

并且还将 形成 更改为cv模型中的 格式 ,因为{{ 1}}关系。

<强> 更新

您还应该将 删除 链接更改为此类

has_many

答案 2 :(得分:0)

谢谢你使用这个

<%= link_to 'delete', @cv, :data => {:confirm => 'Are you sure?'}, :method => :delete %>

def destroy
    @cvdestroy = Cv.find(params[:id])
    @cvdestroy.destroy
    redirect_to cvs_path, :notice => "Your CV has been deleted"
end