2012-03-30 16 views
5

¿Hay alguna manera de establecer col como dinámico o convertirlo de algún modo en un atributo válido? Actualmente está lanzando el error: no definido método `col =' para # ...Cómo establecer un atributo dinámico

def copy_stock_data_from_sandbox(cntrlr) 
    source_table = cntrlr.singularize.classify.constantize 
    dest_table = source_table.new 
    source_table.column_names.each do |col| 
    dest_table.col = xyz # <------ This is the line in question 
    end 
    dest_table.save 
end 

Además, no estoy seguro si el título es exacto, por favor, si sugieren 'atributo dinámico' es el término incorrecto para esta situación . Gracias

Respuesta

11

Creo que usted está buscando lo siguiente:

dest_table.send(:"#{col}=", xyz) 
7

Usted puede intentar

dest_table.write_attribute(col, xyz) 

O

dest_table[col] = xyz 

O

dest_table.send("#{col}=", xyz) 
+0

'write_attribute' es un método privado –

Cuestiones relacionadas