Forum: Rails-ES Crear tablas con nombre variable en Rails

003afee697019f6edf0b6748a08023e9?d=identicon&s=25 Luis García (darkermouse)
on 2013-03-21 21:47
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 <td> en concreto. La idea es que
recoja los datos de más páginas y de más de un <td> 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
B556847a906d7de134f0e7c65b1a0fb4?d=identicon&s=25 Juan Lopez (juannelosoft)
on 2013-06-27 00:19
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.
This topic is locked and can not be replied to.