Crear tablas con nombre variable en Rails


#1

Hola a todos, tengo una duda que no consigo resolver y quería ver si
alguien me puede echar una mano.

Estoy empezando mi primera aplicación en RoR.

Tengo una clase que consiste en recorrer unas páginas html, extraer una
información en concreto (string) y guardarla en una variable. Esto lo
hago con Nokogiri.

Después creo una tabla en la base de datos con una serie de campos. El
problema lo tengo en que me gustaría que el nombre de la tabla fuera el
de la variable. Seguro que os parece ridículo el problema, pero es que
he probado de mil formas y no doy con ello.

Os adjunto el código que tengo (por favor no os riais):

class CreaTablaDesempleados < ActiveRecord::Migration

def parsea
doc = Nokogiri::HTML(open(‘http://www.inem.es/fichas/fichas.php’))

doc.xpath(’/html/body/table/tr/td[3]/table[2]/tr[3]/td’).each do |
texto |

  contenido = texto.content
  contenido = texto.downcase
  contenido = texto.gsub(', ', '')
end

end

def up
create_table :(‘aqui quiero meter lo que me devuelve
“contenido”’) do |tabla|
tabla.string :nombre, :limit => 80, :null => false
tabla.string :apellido_paterno, :limit => 80
end
end

def down
end
end

El programa lo acabo de iniciar por eso solo, como veis, parsea una
página y recoge el contenido de un

en concreto. La idea es que
recoja los datos de más páginas y de más de un en cada página, pero
ahora no se como hacerlo y antes debería solucionar este problemilla con
el nombre de la tabla en la base de datos.

Se os ocurre alguna ayuda. Muchas gracias a todos, como siempre.

Un saludo


#2

Hola,

Eso no estoy seguro que se pueda hacer pero a mi lo que se me ocurre es
que ejecutes directamente la creación de una tabla:

query = “CREATE TABLE " + contenido + " (nombre varchar(80) NOT NULL,
apellido_paterno varchar(80));”

ActiveRecord::Base.connection.execute(query);

pero aquí tendrías el problema de consultar la tabla por que no tendrás
un modelo que te haga la búsqueda, no se si te sea útil esto.

Saludos.