Io uso un esempio con Rails 3, ma credo che questo sia vero anche per Rails 2.3.Rails, perché joins restituisce array con valori non uniq?
Supponiamo, ho Città modello che ha molte posizioni. Cerco di trovare le città che hanno posizioni.
Io uso seguente codice:
City.joins(:locations)
Ma array di uscita è:
=> [#<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">]
Lunghezza campo è 4 (numero di locazioni di Moscow).
In quale caso può essere utile? Per quali scopi sono 4 copie di un oggetto in output-array?
Posso usare City.joins (: locations) .uniq, ma ho perso agile di Arel.
Ho due domande:
- Perché join Restituisce Array non unico?
- Che cosa si preferisce utilizzare al posto di join per questo scopo?
Grazie! gruppo è quello che mi serve! Ma perché le rotaie non vogliono raggruppare da sole? L'oggetto Rails di output è una matrice di città senza posizioni. E IMHO non ci sono casi d'uso per tale output. – petRUShka
Grazie per la risposta utile. Una domanda: City.x non restituirebbe naturalmente la città senza la necessità dell'istruzione selezionata? –
@edebill c'è un modo per omettere questo 'gruppo ('cities.id')' su ogni query? – asiniy