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