Join tra tabelle

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: http://it.docs.yahoo.com/nowyoucan.html

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

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

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

Il 02/05/07, Fabrizio T. [email protected] 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

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

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!!!

Grazie lo stesso tarini…

Qualcun altro potrebbe aiutarmi?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs