# Join tra tabelle

**URL:** <https://www.ruby-forum.com/t/join-tra-tabelle/103167>\
**Category:** IT\
**Created:** [May 2, 2007, 5:19pm UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167 "2007-05-02T17:19:38Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 2, 2007, 5:19pm UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/1 "2007-05-02T17:19:38Z")

</div>

Ciao a tutti,  
sono alle prime armi di Ruby on Rails. Ho creato la mia piccola  
applicazione web ed ho una tabella links che contiene i link da  
visualizzare in una pagina del sito. Volendo dividere i link in  
categorie ho creato una tabella categories.

Questo è il codice SQL delle due tabelle:

DROP TABLE IF EXISTS `xbrail2_production`.`categories`;  
CREATE TABLE `xbrail2_production`.`categories` (  
`id` int(10) unsigned NOT NULL auto\_increment,  
`name_en` varchar(255) default NULL,  
`name_it` varchar(255) default NULL,  
PRIMARY KEY USING BTREE (`id`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `xbrail2_production`.`links`;  
CREATE TABLE `xbrail2_production`.`links` (  
`id` int(11) NOT NULL auto\_increment,  
`site_name` varchar(255) default NULL,  
`subtitle_en` text,  
`abstract_en` text,  
`category` varchar(255) default NULL,  
`url` varchar(255) default NULL,  
`top_site` tinyint(1) default NULL,  
`subtitle_it` text,  
`abstract_it` text,  
`categoryId` int(10) unsigned default ‘1’,  
PRIMARY KEY USING BTREE (`id`),  
KEY `FK_links_categories` (`categoryId`),  
CONSTRAINT `FK_links_categories` FOREIGN KEY (`categoryId`) REFERENCES  
`categories` (`id`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Nel model Link ho messo belongs\_to :categories nel model Category ho  
messo has\_many :links.  
Nella pagina di amministrazione del sito ho la lista completa dei link  
con il campo categoryId che mi visualizza l’identificativo (numero  
intero) della categoria.  
Come posso fare a visualizzare il nome della categoria al posto del id?  
Io ho provato dichiarare un metodo nel model link che fa una join tra le  
due tabelle:

def find\_category\_name  
name = Link.find(:all, :joins =\> “INNER JOIN categories on  
categories.id = categoryId”)  
end

Purtroppo non sò se sono sulla buona strada e se sì come andare avanti.

Vi srivo il codice della view list che visualizza la lista dei link:  
\<% for link in @links %\>  
  
  
\<%=h(link.site\_name) %\>  
  
  
  
\<%=h(link.category) %\>  
  
  
  
\<%=h(link.categoryId) %\>  
  
…

Questo è il controller con il metodo che crea la list

def list  
@link\_pages, @links = paginate :links, :per\_page =\> 15  
end

Qualche suggerimento? Scusate la mia domanda banale e probabilmente  
anche la poca chiarezza nell’esporre il problema ma purtroppo ho poche  
idee e ben confuse.

Vi ringrazio aticipatamente per le risposte e la pazienza.

Saluti

Taddei Fabrizio

```
  ___________________________________

```

L’email della prossima generazione? Puoi averla con la nuova Yahoo!  
Mail: [Yahoo Search - Ricerca nel Web | Motore di Ricerca](http://it.docs.yahoo.com/nowyoucan.html)

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 2, 2007, 8:14pm UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/2 "2007-05-02T20:14:46Z")

</div>

tarini wrote:

> se fai link.category.name\_it ?

Ciao tarini, grazie per la risposta ho provato a mettere nella view list  
link.category.name\_it come hei suggerito,  
ma mi dÃ questo errore:

ActionView::TemplateError (undefined method `name\_it’ for “XBRL in the  
world”:String) on line #25 of  
vendor/extensions/xbrlink/app/views/admin/links/list.rhtml:  
22: \<%=h(link.category) %\>  
  
23:   
24:

  
25: \<%=h(link.category.name\_it) %\>  
  
26:   
27:   
28: \<%=h(link.url) %\>  

Qualche idea?

Ciao e grazie

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 2, 2007, 6:10pm UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/3 "2007-05-02T18:10:46Z")

</div>

se fai link.category.name\_it ?

–  
everything has got to end sometime we were satellites drifting off into  
space  
vega 4 - burn and fade away

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 2, 2007, 9:35pm UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/4 "2007-05-02T21:35:10Z")

</div>

guarda… non so aiutarti… forse è un problema l’underscore…

Il 02/05/07, Fabrizio T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> world":String) on line #25 of

–  
everything has got to end sometime we were satellites drifting off into  
space  
vega 4 - burn and fade away

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 3, 2007, 10:06am UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/5 "2007-05-03T10:06:21Z")

</div>

Nel modello Link scrivi “belongs\_to :category” (invece di categories)

Sarebbe meglio usare category\_id invece di categoryId. Così Ruby on  
Rails può usarlo automaticamente per fare i join.

Altrimenti dovresti fare:

class Category  
has\_many :links, :foreign\_key =\> “categoryId”  
end

class Link  
belongs\_to :category, :foreign\_key =\> “categoryId” # invece di  
categories  
end

Dopo, puoi fare “name = Link.find(:first).category.name” o

class Link  
def category\_name  
self.category.name rescue “n.d.”  
end  
end

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 3, 2007, 11:31am UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/6 "2007-05-03T11:31:36Z")

</div>

Rob C. wrote:

> Nel modello Link scrivi “belongs\_to :category” (invece di categories)
> 
> Sarebbe meglio usare category\_id invece di categoryId. Cosï¿½ Ruby on  
> Rails puï¿½ usarlo automaticamente per fare i join.

Funziona grazie mille Rob!!!

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 3, 2007, 8:58am UTC](https://www.ruby-forum.com/t/join-tra-tabelle/103167/7 "2007-05-03T08:58:30Z")

</div>

Grazie lo stesso tarini…

Qualcun altro potrebbe aiutarmi?
