Railsでhas_manyで紐付いたデータがそれぞれ重複している
has_many + through で定義したmodelに紐づくデータを取得すると、データベース上は1件ずつしか存在しないのに、各データが重複して取得されてしまうケースが発生しました。
具体的な内容としては、
「apple」と「orange」というテーブルがあり、「apple_orange」という中間テーブルがあるとします。
そして、appleのmodelファイルに
has_many :oranges, :through => :apple_oranges
と定義した場合、
apple.oranges
でapple_orangeを経由して orange のデータが取得できるはずです。
ここで、仮に以下のようなデータ状態だったとします。
・apple
id|title
--------
1|AA
・orange
id|title
--------
1|AA
2|BB
3|CC
・apple_orange
id|apple_id|orange_id
---------------------
1| 1| 1
2| 1| 2
3| 1| 3
この場合、Apple.find(1).oranges の結果件数は 3件 だと思います。
これがorangeのデータがそれぞれ重複され 6件 取得できてしまうケースがありました。
今までにこのようなケースに遭ったことがなく、しかも、1回起こったものの、以降は発生していません。
発生時にたまたまデータが2件ずつ存在した、ということはありません。
Railsの内部的な問題でしょうか。
ご存知でしたらご教示いただければと思います。
なお、環境は以下になります。
Ruby 1.8.7
Rails 2.3.5
CentOS 5.9