我在 Rails 5.0 上。我不太确定这是否可行,或者我是否需要采取不同的方法。我有过程和并发症的模型,其中过程 has_many Complications 定义如下;
class Procedure < ActiveRecord::Base
has_many :complications, dependent: :destroy
accepts_nested_attributes_for :complications, allow_destroy: true, reject_if: proc{|attr| attr[:name] == 'None'}
end
class Complication < ActiveRecord::Base
belongs_to :procedure
validates :name, presence: true
end
向用户呈现具有多种并发症的程序的嵌套表格。我已经使用茧宝石动态地做到这一点。在新记录上,用户会看到一个空的并发症选择框。如果他们将其留空,则验证失败。这是为了强制他们选择“无”,以防止他们跳过该字段。如果他们确实选择了“无”,则不会因为该reject_if
选项而添加任何并发症。所有这些都完全按预期工作。
如果选择了并发症(例如“失败”)并且随后编辑了程序记录,则会出现问题。如果并发症更改为“无”,然后更新记录,当我想要的行为是销毁并发症时,并发症将保持不变(即仍然“失败”)。
如果更新记录已存在,则可能拒绝_if 选项无法删除更新记录。这个对吗?如果是这样,处理我的案件的适当方式是什么?
TIA。