I have a has_many through:
Foo has many Bar through foo_bars
I want to pass an array of bar ids to some method on Foo that will remove the relationship in both directions-
Something like
foo.bars.delete([1,3,5,8])
However, delete
only accepts the ID of one Model. There has got to be a way to do this in bulk and I just cannot find the answer. Any help is much appreciated.
Unfortunately Richard Peck code will not work if want to delete an array of ids.
You will get a "some association expected, got Fixnum" error.
This code will be able to do the job:
foo.bars.where(id: array_of_ids).delete_all
But the best way I found this to work is based on this answer comments and related to Richard answer is to use splat
= *
:
foo.bars.delete(*array_of_ids)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With