I’d like to suggest adding a stronger version of the :reject_if option to the .accepts_nested_attributes_for class method, one that not only prevents new records from being added, but also destroys existing records, using the same supplied logic.
A person has many email addresses, and the person wants to update their profile by adding and removing email addresses in a form. This form is designed to be a simple list of text fields, one for each email address. Users can update an existing email address by simply editing the text field, create a new email address by filling in a new text field, and remove existing email addresses by clearing out a text field. Simplicity and consistency is the goal here.
However, .accepts_nested_attributes_for’s :reject_if option only permits 2/3 of these use-cases, so I have created a gem that adds a new :destroy_if option, and this permits all three use-cases! I am posting here to see if there is interest in merging this (in one form or another) into ActiveRecord itself. More details are in the README of the gem:
What do y’all think? Feedback very welcome. Thank you for your time!