如果嵌套模型的父级具有特定值的字段,请尝试找出清除嵌套模型的最佳方法。
我有模型Company
,Person
和Role
。公司has_many people
和一个人可以是承包商,由people
表中设置的布尔值确定,由以下单选按钮设置:
<%= f.input :contractor, as: :radio_buttons, label: 'Is this person a contractor?', input_html: { class: 'entity_tf form-control rtf radio radio-false' } %>
现在,在视图中,如果用户点击“是”,则会向用户显示一个按钮,用户可以使用该按钮添加动态茧字段,列出此人员承包商的角色。
我的问题是:
假设在添加一堆角色后,用户突然意识到他正在编辑的人实际上并不是承包商(或类似的东西),并决定将单选按钮更改为“否”。我设置它的方式,无线电领域将被隐藏。这意味着它们将被保存在提交的表单上。 如果单选按钮设置为false,如何在提交表单后最好删除它们?我正在考虑为模型添加一些条件/验证。
感谢任何想法。
答案 0 :(得分:1)
在Person模型中使用callback。
after_save :remove_all_roles, unless: :is_a_contractor_bool?
def remove_all_roles
self.roles.delete(self.roles)
end