ActiveRecordで複数の関連を持つcollectionに対する追加の方法
ActiveRecordで複数の関連を持つcollectionに、新たなレコードを追加させたい場合の実装について悩んでいます。
まず、テーブル構成を示します。
テーブル
- users … ユーザの情報を保持するテーブル
- entries … 記事の情報を保持するテーブル
- laters … "あとで読む"に設定した記事とユーザを紐付ける中間テーブル
- checks … "既読"に設定した記事とユーザを紐付ける中間テーブル
アソシエーション
- user → laters → entrys
※ userはlatersを中間テーブルとしてhas_many: entries
な関連を持つ - user → checks → entrys
※ userはchecksを中間テーブルとしてhas_many: entries
な関連を持つ
質問
下記のように既読記事の追加(user-check-entryの紐付けの追加)の実装を行ったのですが意図どおりに動きません。
entry = Entry.new
:
entry.save
User.find(1).entries<<entry
意図するところは、checksテーブルに紐付けのレコードがinsertされることですが、実際にはlatersテーブルにinsertされてしまいます。
複数の関連を持つcollectionに、明示的に「こっちの紐付けを追加」というような操作はできますでしょうか。
ソースコード
Github
https://github.com/hogesuke/tech-book/tree/master/model