Ruby on Rails Guides: A Guide to Active Record Associations
The use of extra attributes on the join table in a has_and_belongs_to_many association is deprecated. If you require this sort of complex behavior on the table that joins two models in a many-to-many relationship, you should use a has_many :through association instead of has_and_belongs_to_many.
「has_and_belongs_to_many」はなくしちゃうから、これからは代わりに「has_many :through」を使ってね。っていうことだったと記憶していたんですが、あらためてドキュメントを読んだら「非推奨なのは関連が属性を持つ場合だけ」ととれる感じになっていました。ずっと勘違いしてたっぽい。それともどこかのタイミングで変わったのかしらん。[要出典]
で、migrationは手動で作ってね、とこんな感じ。
ActiveRecord::Associations::ClassMethods
The join table should not have a primary key or a model associated with it. You must manually generate the join table with a migration such as this: