This method is used in two different ways:

1. In a controller by `authorize` where it is typically called once
2. In a view where it can be called many times

This change is an attempt to allow mocking at the controller level as explained in the pull request description. If `@policy` is used it isn't possible to call this method multiple times in the view for different resources. Not using an instance variable means I can't mock out the methods being called in tests.