我有一个简历模型has_many:技能,以及我的技能模型belongs_to:resume。
我在简历表格中嵌套技能表格,它正在创造完美的记录和关系。但是当我试图销毁简历时,相关的技能不会随之被破坏。
以下是我的模特:
# Resume.rb
class Resume < ActiveRecord::Base
has_many :skills
belongs_to :user
accepts_nested_attributes_for :skills, allow_destroy: true
end
# Skill.rb
class Skill < ActiveRecord::Base
belongs_to :resume
end
这是resume_controller.rb
中的强力参数def resume_params
params.require(:resume).permit(:user_id, :title, :summary, :job_title, skills_attributes [:skill_name, :_destroy])
end
据我所知,我正在正确传递_destroy密钥。我注意到有些人在表单中有_destroy复选框。我希望在销毁整个简历时删除技能。谢谢!
答案 0 :(得分:2)
你所指明的只是你可以在简历中破坏技能,就像你在一些例子中提到的复选框一样。如果您希望它破坏简历销毁时所有相关技能,您可以调整has_many
声明。
has_many :skills, dependent: :destroy
答案 1 :(得分:2)
在您的:dependent => :destroy
模型中添加Resume
,如下所示:
class Resume < ActiveRecord::Base
has_many :skills, :dependent => :destroy
belongs_to :user
accepts_nested_attributes_for :skills, allow_destroy: true
end
:dependent
控制关联对象在其所有者销毁时会发生什么:
:destroy
导致所有相关对象也被销毁
:delete_all
导致所有关联对象直接从数据库中删除(因此回调将不会执行)
:nullify
会将外键设置为NULL。回调不会被执行。
:restrict_with_exception
会引发异常
:restrict_with_error
会导致错误添加到所有者