Please explain the difference between has_and_belongs_to_many and has_many through relationship. When and where to use which one?
From my experience it's always better to use has_many: through because you can add timestamps to the table. Many times while debugging some ActiveRecord objects that are connected through HABTM, I was missing created_at, updated_at timestamps to get the clue what actually happened. So keep in mind that it can help you to debug, investigate issues with data relations in context of time, because without it your are "blind" when relations were created or updated.