I hear what you're saying about the language, but allow me to offer my rationale.

If we instead had the `transfer?` method in `CookbookAuthorizer`, when it got called, it would have access to the cookbook owner and the cookbook itself.  There's no knowledge at that point about the collaborator that you're transferring ownership to.  It feels more correct to me to be making decisions about a collaborator when you have the actual record of the collaboration there in the method.  That feels like a stronger guarantee that you're doing The Right Thing™ and like there's less chance of something nefarious happening.  In my mind, that guarantee trumps the English used to describe what happened, which is why I chose to implement it this way.

I originally had the authorizer method named `transfer_ownership?` which felt like it more appropriately described the intent.  Reading the code when it was written that way would say that the user is authorized to transfer ownership to the cookbook collaborator, which feels perfectly natural to me.  I changed the name to `transfer?` after @tristanoneil 's comment about having the controller action and the authorizer method match names.

Perhaps it'd be better to rename the controller action to `transfer_ownership` and put the authorizer method back how it was (which imo is a better description of what's actually happening), though that will lengthen the already lengthy route.  We could also just live with having the controller action and the authorizer method have different names (the horror!) :laughing: