ActiveRecordのdestroyで発行されるSQLが不完全な状態となる
質問の前にテーブルの構成を示します。
構成
テーブル
- users … ユーザ情報を保持するテーブル
- entries … はてなブックマークのエントリー情報を保持するテーブル
- laters … ユーザが”あとで読む”に設定したエントリー情報を保持するテーブル
リレーション
- users … has_many :laters
- entries … has_many :laters
- laters … belongs_to :user、belongs_to :entry
質問
ユーザに紐づくlatersテーブルのレコードを削除する実装がうまくいきません。
削除の実装は簡略化すると、下記のようになります。
実装
User.find(1).laters.where({:entry_id => 1}).first.destroy
この実装で動かすと下記のようなSQLが発行されます。
発行されるSQL
DELETE FROM laters WHERE laters.'' = NULL
latersのレコードが取得できていないのかと思い確認しましたが、レコードは取得されていました。
何が原因で不完全なSQLとなっているか分かりますでしょうか。
ソースコード
Githubにソースコードを上げています。
https://github.com/hogesuke/tech-book
該当箇所
https://github.com/hogesuke/tech-book/blob/master/app.rb#L221