【问题标题】:Clear all nested models if parent has field of particular value如果父级具有特定值的字段,则清除所有嵌套模型
【发布时间】:2015-10-10 10:59:02
【问题描述】:

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

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

感谢您的任何想法。

【问题讨论】:

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


    【解决方案1】:

    在您的 Person 模型中使用 callback

    after_save :remove_all_roles, unless: :is_a_contractor_bool?
    
    def remove_all_roles
        self.roles.delete(self.roles)
    end
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2022-10-09
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多