nested_attributes_forで削除予定のレコードを検知する方法です。
nested_attributes_forを使うと親レコードにひもづく子レコードを、すっきりしたコードで記述、insertすることができます。
今回フォームに回答があった場合は、フォームに紐づくパーツを変更不可にするvalidationを組んでみました。
フォームに紐づくパーツの変更をどうやって検知するかですが,marked_for_destruction?
を使うと検知できます。
member.avatar_attributes = { id: '2', _destroy: '1' } member.avatar.marked_for_destruction? # => true member.save member.reload.avatar # => nil
実際は
parts.any?(&:marked_for_destruction?) || parts.any?(&:changed?)
みたいな感じで書けば、削除される予定か?変更予定か?を調べることができます。
Rails便利。
コメントを残す