Я использую пример с Rails 3, но я считаю, что это верно и для Rails 2.3.
Предположим, у меня есть модель City, которая имеет много локаций. Я пытаюсь найти города, которые имеют местоположения.
Я использую следующий код:
City.joins(:locations)
Но выходной массив:
=> [#<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">]
Длина массива - 4 (количество населенных пунктов Москвы).
В каком случае это может быть полезно? Для каких целей в выходном массиве 4 копии одного объекта?
Я могу использовать City.joins (: location) .uniq, но я потерял ловкость арела.
У меня два вопроса:
- Почему объединения возвращают не уникальный массив?
- Что предпочитаете использовать для соединений вместо соединений?