# Un aiuto per la ricerca di dati in un database

**URL:** <https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561>\
**Category:** IT\
**Created:** [December 5, 2011, 9:40pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561 "2011-12-05T21:40:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [December 5, 2011, 9:40pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/1 "2011-12-05T21:40:35Z")

</div>

Scusate se faccio magari una domanda stupida ma sono totalmente nuovo di  
ruby e ror.

Ho questo controller:

def show

```
@posts=Post.find(params[:id])

```

end

Che non fa altro che ricevere un id e caricare uno specifico post  
tramite l’id passato.

Ora volevo caricare oltre al post anche i commenti relativi ad esso.

la tabella dei commenti ha una colonna chiamata “id\_post” che serve per  
specificare a quale post quel commento si riferisce.

Avevo pensato allora di fare una ricerca sul database usando la funzione  
where.

Ad esempio @comments = Comment.where("id\_post=’ 4 ’ ")

Cosi facendo non ho problemi, ritrovo tutti i commenti relativi al post  
4. MA come faccio a rendere dinamica questa stringa? Dovrei in pratica  
sostiruire al 4 il valore “params[:id]” .

ma in pratica come faccio? Devo concatenare params[:id]? c’è una  
sintassi specifica?

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 9:48pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/2 "2011-12-05T21:48:11Z")

</div>

Ciao!  
non il metodo migliore quello che stai usando… consiglio di leggerti  
un  
po’ di informazioni sulle nested resources (belongs\_to e has\_many).  
Comunque nel tuo caso credo che dovresti fare:

@comments=Comment.where(:id\_post =\> params[:id])

fammi sapere se funziona!

J

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 10:03pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/3 "2011-12-05T22:03:47Z")

</div>

Prova con  
@comments = Comment.where(:post\_id =\> params[:post\_id])

Qui i riferimenti:

> **[6.2. Array Conditions - Active Record Query Interface — Ruby on Rails Guides](https://guides.rubyonrails.org/active_record_querying.html#array-conditions)**
>
> If you’re used to working directly with raw SQL, Active Record offers a more readable and expressive way to perform the same operations. It works with most database systems, including MySQL, MariaDB, PostgreSQL, and SQLite, and its method-based...

Il giorno 05 dicembre 2011 21:47, Jonas G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Matteo C.  
Ufficio Reti e Sistemi  
Universit degli Studi di Ferrara  
Tel. 0532 97 4153

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 10:44pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/4 "2011-12-05T22:44:14Z")

</div>

Jonas G. wrote in post #1035230:

> Ciao!  
> non il metodo migliore quello che stai usando.. consiglio di leggerti  
> un  
> po’ di informazioni sulle nested resources (belongs\_to e has\_many).  
> Comunque nel tuo caso credo che dovresti fare:
> 
> @comments=Comment.where(:id\_post =\> params[:id])
> 
> fammi sapere se funziona!
> 
> J

Grazie mille, funziona 🙂

Si so che ci sono altri modi per farlo, ma prima di addentrarmi in cose  
più complicate volevo imparare a fare le cose più semplici 😃

Grazie mille!

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 10:56pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/5 "2011-12-05T22:56:24Z")

</div>

Bene!  
Comunque guardando il post di Matteo ho realizzato che hai invertito  
“post”  
e “id”. Di solito la foreign key (che sarebbe la chiave che collega a  
un’altra tabella, nel tuo caso i commenti ai post) scritta “post\_id” e  
non “id\_post” come hai fatto tu. Pu sembrare una stupidata ma ricorda  
che  
rails lavora molto con le convenzioni e in alcuni casi da per scontato  
che  
tu faccia le cose in una determinata maniera.  
Se utilizzi le convenzioni giuste (e le nested resources) per trovare i  
commenti ti baster fare:

@comments = Post.find(params[:id]).comments

Se avessi utilizzato le nested resources il problema non si sarebbe  
posto  
perch Rails crea automaticamente la foreign\_key corretta.

buon Railing 🙂

J

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 11:02pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/6 "2011-12-05T23:02:19Z")

</div>

Jonas G. wrote in post #1035238:

> Bene!  
> Comunque guardando il post di Matteo ho realizzato che hai invertito  
> “post”  
> e “id”. Di solito la foreign key (che sarebbe la chiave che collega a  
> un’altra tabella, nel tuo caso i commenti ai post) scritta “post\_id” e  
> non “id\_post” come hai fatto tu. Pu sembrare una stupidata ma ricorda  
> che  
> rails lavora molto con le convenzioni e in alcuni casi da per scontato  
> che  
> tu faccia le cose in una determinata maniera.  
> Se utilizzi le convenzioni giuste (e le nested resources) per trovare i  
> commenti ti baster fare:
> 
> @comments = Post.find(params[:id]).comments
> 
> Se avessi utilizzato le nested resources il problema non si sarebbe  
> posto  
> perch Rails crea automaticamente la foreign\_key corretta.
> 
> buon Railing 🙂
> 
> J

Grazie mille per la precisazione 🙂

Ho notato infatti che rails sfrutta tanto le convenzioni (non ti dico  
quando ci ho impiegato a capire il singolare/plurale nei  
controller/model), buono a sapersi!

Gentilissimo!

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 11:30pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/7 "2011-12-05T23:30:28Z")

</div>

Il giorno 05 dicembre 2011 22:55, Jonas G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Bene!  
> […]
> 
> @comments = Post.find(params[:id]).comments

Jonas,  
attenzione che come hai scritto hai il problema delle n+1 query. In  
questi  
casi consiglio di usare include:

@comments = Post.includes(:comments).find(params[:id]).comments

ma forse qui stiamo andando troppo avanti per chi alle prime armi 😉

> J
> 
> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Matteo C.  
Ufficio Reti e Sistemi  
Universit degli Studi di Ferrara  
Tel. 0532 97 4153

---

<div class="post-metadata">

**Author:** ![noiz777](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/50afbb/32.png) [@noiz777](https://www.ruby-forum.com/u/noiz777)\
**Post date:** [December 5, 2011, 11:46pm UTC](https://www.ruby-forum.com/t/un-aiuto-per-la-ricerca-di-dati-in-un-database/214561/8 "2011-12-05T23:46:33Z")

</div>

Grazie! sono anche io alle prime armi ma ho pensato avrei imparato di pi  
buttandomi nelle discussioni, e questa ne la prova 😃
