One thing that might make this feel more efficient while retaining the consistency of using Authorizers is by introducing a `CookbookAuthorizer` which has a `create_collaborator?` method. Then instead of implicitly authorizing `create?` on each `CookbookCollaborator` object inside the loop, you could explicitly authorize `create_collaborator?` on the `Cookbook` object once outside the loop:

```ruby
def create
  authorize!(@cookbook, :create_collaborator?)

  # etc.
end
```