Please explain the difference between has_and_belongs_to_many and has_many through relationship. When and where to use which one?
You should use has_many :through if you need validations, callbacks, or extra attributes on the join model.