質問: 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
回答: 偶然のタイミングで発生するバグとしては考えにくい挙動ですが、もし事例があるなら古いRailsのIssueに残ってるかもしれません。 それよりも、RubyもRailsもあまりに古すぎるので、速やかにバージョンアップすることをおすすめします。