Estoy tratando de convertir un valor de cadena en un nombre de un atributo que pertenece a un objeto. Por ejemplo, en el siguiente código, necesito todos los valores de cadena en el column_array
convertidos en nombres de atributos. Los nombres "student_identification"
, "email"
, etc. son nombres de columnas reales de mi tabla Student
. En el escenario real, column_array
será establecido por el usuario (marcando las casillas de verificación). Y new_array
será reemplazado por csv
, ya que quiero que los datos entren en un archivo csv.Cómo convertir de una cadena a un nombre de atributo de objeto?
En este momento estoy realmente luchando en la siguiente línea:
new_array << r."#{column_array[i]}"
Quiero "#{column_array[i]}"
a ser convertido en el nombre del atributo para que pueda acceder a los datos.
def exp_tst
@records = Student.find(:all, :conditions=> session[:selection_scope],
:order => sort_order('laboratory_id'))
column_array = ["student_identification", "laboratory_id", "email", "current_status"]
new_array = Array.new()
@records.each do |r|
(0..(column_array.size-1)).each do |i|
new_array << r."#{column_array[i]}"
end
end
end
'(0 .. (column_array.size -1)). Cada' puede ser reemplazado por 'column_array.each_index'. –