如果父项具有特定值的字段,则清除所有嵌套模型

时间:2015-07-21 06:02:02

标签: jquery ruby-on-rails validation ruby-on-rails-4 cocoon-gem

如果嵌套模型的父级具有特定值的字段,请尝试找出清除嵌套模型的最佳方法。

我有模型CompanyPersonRole。公司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,如何在提交表单后最好删除它们?我正在考虑为模型添加一些条件/验证。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

在Person模型中使用callback

after_save :remove_all_roles, unless: :is_a_contractor_bool?

def remove_all_roles
    self.roles.delete(self.roles)
end