Tengo un script usando ActiveRecord que crea nombres de columna dinámicamente en base a los valores leídos desde un archivo CSV, algo como esto:nombres de columna Actualizar en la clase del modelo ActiveRecord
FasterCSV.foreach('votes.csv', :headers => true) do |row|
column_name = "roll_call_id_#{row['roll_call_id']}"
if !Legislator.columns.map(&:name).include?(column_name)
connection_pool.connection.add_column('legislators', column_name, 'string')
end
end
El problema es que, después de crear el nuevo columna, no puedo hacer un legislator.update_attribute(column_name, value)
porque la clase no recoge la nueva columna y se queja de que no existe.
¿Cómo puedo hacer que vuelva a consultar la estructura de la tabla?
¿Existe una forma sencilla de aplicar a cada modelo, por ejemplo: 'ActiveRecord :: Base. reset_column_information'? – Dorian
Sí, 'ActiveRecord :: Base.descendants.each (&: reset_column_information)' – Joao