Can I set up Cascade deleting in Rails?
you can also set the :dependent option to :delete_all. :delete_all will issue a single SQL statement to delete all child records. because of this using :delete_all may give you better performance.
has_many :memberships, dependent: :delete_all
Yeah you can, if you are using a relationship like has_many you just do this
has_many :memberships, dependent: :destroy
Contrary to the provided answer I highly suggest also doing this on a database level. In case you have different processes or a multi threaded environment it could happen that records are not properly deleted. Furthermore the database foreign key makes things way faster when deleting lots of data.
Like in the suggested answer do this:
has_many :memberships, dependent: :delete_all
However also make sure to setup a foreign_key
in a migration. That way the database takes care of deleting the records automatically for you.
To nullify the values when a membership is deleted, assuming you have a user model:
add_foreign_key :users, :memberships, on_delete: :nullify
You can also delete all the models whenever a membership is deleted
add_foreign_key :users, :memberships, on_delete: :cascade