TL;DR

Read this from the Rails Guides

Today I created an explicit join table between two models because each had has_and_belongs_to_many, as I’ve done many time before. Except, this time, when I tried to render one of my views, it said it couldn’t find a join table.

Example:

I created users_roles and the view error stated it was looking for roles_users.

Incorrect:

users_roles

Correct:

roles_users

My first inclination was the fact that it was looking for it in alphabetical order. Sure enough, the Rails Guide Documentation states that Rails developers do need to explicitly create their join tables but they have to be in lexical order (alphabetical).