Coming back to this.

1. Does this method apply to not only `has_and_belongs_to_many` but also `has_many :through` associations? If so, would a better name be `through_target_table_name`?

2. Is there another way to say this? Perhaps `@subject.reflect_on_association(options[:through]).through_reflection` ?

3. Can't you use `.table_name` instead of having to say `.options[:class].table_name`?

3. Would it be a good idea to extract the reflection to a separate method?

4. Can you rename #through? to #through_name (aliased as #through?) and then use that instead of `reflection.options[:through]`?

Putting it all together here's what I'm envisioning:

```ruby
def through_target_table_name
  if through_target_reflection
    through_target_reflection.table_name
  end
end

def through_target_reflection
  @_through_target_reflection ||= 
    if through?
      @subject.reflect_on_association(through_name).through_reflection
    end
end
```