polymorphic_constraints
polymorphic_constraints copied to clipboard
For Postgres, use constraint triggers?
I'm so glad that someone has already written a gem for this!
I was looking at your Postgres adapter code, and what do you think of using CREATE CONSTRAINT TRIGGER instead? That is how Postgres implements its own foreign keys, and it would let you do SET CONSTRAINTS on these like you can with regular foreign keys. It would require changing the triggers from BEFORE to AFTER, but that doesn't look like a problem to me.
Incidentally, you should technically have an UPDATE trigger on the same table as the DELETE trigger in case the primary key changes, although I understand that is unlikely to happen in a Rails app.
I don't personally use this gem anymore. Polymorphism is an antipattern in database system design. We should use alternative solutions although they aren't very pleasant ones.
Polymorphism is an antipattern in database system design.
I'm inclined to agree. :-) Still it is used by some handy gems, e.g. Rolify, and it would be nice to lock them down.
I don't personally use this gem anymore.
So do you mind if I fork it? I'm interested in adding database integrity to Rails projects. I wrote a gem myself for database constraints, and I've contributed to another. Forking would be a useful occasion for the change I've suggested here. I'd also like to update the gem for Rails 5.
@pjungwir You can either fork it or I can add you as a maintainer of this gem.
Okay, I'd be happy to help as a maintainer. That would be less disruptive for sure. Then for changing the constraint type we can just add a version bump.
I've added you as a collaborator in this repository.