# Modificare le query ActiveRecord

**URL:** <https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463>\
**Category:** IT\
**Created:** [January 11, 2014, 9:40pm UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463 "2014-01-11T21:40:59Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![musicdenotation](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ea666f/32.png) [@musicdenotation](https://www.ruby-forum.com/u/musicdenotation)\
**Post date:** [January 11, 2014, 9:40pm UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463/1 "2014-01-11T21:40:59Z")

</div>

Utilizzo il seguente codice per popolare una tabella contenente un model  
Movie che a sua volta contiene delle relazioni

movies = Movie.order("#{sort\_column}")

def sort\_column  
columns = %w[created\_at author.name]  
columns[params[:iSortCol\_0].to\_i]  
end

Quando provo a sortare sui campi del model Movie tutto funziona  
correttamente e ActiveRecord esegue la query:

SELECT “movies”.\* FROM “movies” ORDER BY created\_at

ma se provo a sortare per il campo relazionato (author.name),  
ActiveRecord non fa la Join delle tabelle e fallisce riportando il  
seguente errore:

ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column:  
author.name: SELECT “movies”.\* FROM “movies” ORDER BY author.name

C’e’ un modo per forzare ActiveRecord a fare una join o risolvere il  
problema ?

–  
FleX  
[Linux User #347703 PGP Key ID: 98AA9D3E  
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [January 11, 2014, 11:16pm UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463/2 "2014-01-11T23:16:47Z")

</div>

Ciao Giuseppe,

nell’ipotesi che i models siano:

class Movie \< ActiveRecord::Base

> belongs\_to :author  
> end  
> class Author \< ActiveRecord::Base  
> end

La query AR:

Movie.includes(:authors).order(‘authors.name’)

esegue la query SQL:

SQL (0.2ms) SELECT “movies”.“id” AS t0\_r0, “movies”.“name” AS t0\_r1,

> “movies”.“author\_id” AS t0\_r2, “movies”.“created\_at” AS t0\_r3,  
> “movies”.“updated\_at” AS t0\_r4, “authors”.“id” AS t1\_r0, “authors”.“name”  
> AS t1\_r1, “authors”.“created\_at” AS t1\_r2, “authors”.“updated\_at” AS t1\_r3  
> FROM “movies” LEFT OUTER JOIN “authors” ON “authors”.“id” =  
> “movies”.“author\_id” ORDER BY authors.name

ricorda che in ‘authors.name’ è presente il nome della tabella Author,  
che  
è quindi plurale.

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [January 12, 2014, 9:03am UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463/3 "2014-01-12T09:03:46Z")

</div>

On 01/11/2014 11:16 PM, maurizio de magnis wrote:

> La query AR:
> 
> Movie.includes(:authors).order(‘authors.name’)

Ciao Maurizio,

le ipotesi sono corrette, cosi’ come la soluzione al problema.  
Unica cosa ho duto mettere il primo author al singolare :

Movie.includes(:author).order(‘authors.name’)

Grazie 1.000, mi hai risolto un gran problema

–  
FleX  
[Linux User #347703 PGP Key ID: 98AA9D3E  
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [January 12, 2014, 8:26pm UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463/4 "2014-01-12T20:26:33Z")

</div>

2014/1/12 FleX [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[cut]

> Unica cosa ho duto mettere il primo author al singolare :
> 
> Movie.includes(:author).order(‘authors.name’)

Dannato typo…

Grazie 1.000, mi hai risolto un gran problema

> 

Bella. 🙂

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [January 14, 2014, 3:01am UTC](https://www.ruby-forum.com/t/modificare-le-query-activerecord/238463/5 "2014-01-14T03:01:22Z")

</div>

Salve a tutti, noi di Tascout stiamo cercando un backend developer che conosca ROR, per poter continuare lo sviluppo del nostro progetto e scalare. TASCOUT un social network che consente a bambini e ragazzi lopportunit di mostrare il proprio talento in tutto il mondo senza barriere sociali, geografiche ed economiche e di entrare in contatto diretto con societ, procuratori e talent scout.  
Siamo in procinto di lanciare la Beta e abbiamo gi chiuso collaborazioni molto importanti nel mercato dove agiamo.  
Avremmo bisogno di un aiuto costante per 6 mesi almeno, (6h al giorno minimo)  
Preferibile presenza su Roma.

Grazie ragazzi!
