`has_and_belongs_to_many` no longer exists internally in Rails master and is instead now a wrapper around a `has_many :through` association [cite](https://github.com/rails/rails/issues/14682#issuecomment-40112520). So it's still around, but it's not clear for how long, and under the hood is just `has_many :through` anyway. 

Using a join model instead of HABTM is often considered the better practice as it makes the relationship more explicit (it gets a name and becomes an actual model in your system) and is a no-cost way to save you potential headache down the road if/when you decide that the relationship needs to be extended with behaviour and attributes of its own. There's plenty of people that have [written on the subject](https://www.google.co.uk/search?client=safari&rls=en&q=rails+has_and_belongs_to_many+vs+has_many+through&ie=UTF-8&oe=UTF-8&gfe_rd=cr&ei=xfeOU7rVLs3R8gfN1oHICw), and is also the guidance in the Rails Way series of books.

It's not a hard and fast rule, but I think the advantages of using `has_many :through` far outweigh any disadvantages.