I'm very torn, but that's nothing new with Rails. I'm more of a database guy at heart; thus I want to use the DB to its full potential. I hate artificial/surrogate keys when they aren't needed, I want on update/delete foreign keys. I like stored procedures.
However I like most everything else about Rails, so I've been trying to do things the rails way. I've been willing to compromise on the artificial key thing, though I do wish Rails provided a useful way to define candidate keys in the migration -- every non-unary relation should have at least one set of non artificial columns that can uniquely identify a tuple otherwise you're opening yourself up to madness at some point.
I'm slowly coming around on the foreign key issue. The :dependent=>[possible option types] provides most of the same capabilities as on delete. The main trade-off is efficiency of the delete, on-delete reduces the query overhead while :dependent=>:destroy has higher query overhead, but makes it easier to hang callbacks on the subordinate objects if needed and :dependent=>:delete_all provides something close to the efficiency of the foreign key approach (one additional query no matter how many subordinate tuples to delete).
I suspect once I've further improved my testing assertions to make it easy to specify which depenent method if any, I'll be willing to abandon the foreign keys in the DB. Ie, I find it difficult/annoying/cumbersome to remember to test that deleting a container record deletes the subordinate record and doesn't leave an orphan null behind.
The stored procedure issue is another wash to me -- trading off efficiency of the optimized DB code for an easier to scale DB system. For the size application I think a lot of Rails apps are if they could leverage their DB they wouldn't need to add extra web servers or extra db servers as quickly. However once the have to worry about db replication, I see how the rails approach tends to win for simplicity.
My RoR journey
-- thoughts on learning RoR and lessons learned in applying TDD and agile practices.