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
CC BY-SA 3.0
2015-10-25T02:48:46.317
18041
2016-06-14T09:35:54.627
12953
question
ruby-on-rails ruby
Railsでhas_manyで紐付いたデータがそれぞれ重複している
偶然のタイミングで発生するバグとしては考えにくい挙動ですが、もし事例があるなら[古いRailsのIssue](https://rails.lighthouseapp.com/projects/8994-ruby-
on-rails/tickets)に残ってるかもしれません。

それよりも、RubyもRailsもあまりに古すぎるので、速やかにバージョンアップすることをおすすめします。
CC BY-SA 3.0
2015-11-25T02:29:14.757
19267
2015-11-25T02:29:14.757
5793
18041
answer