我想创建一个链接来删除记录及其在外表中的子记录。 我的模型是这样的:
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)
我该怎么做? 提前谢谢。
答案 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