2012-03-30 12 views
5

C'è un modo per impostare col come dinamico o convertirlo in qualche modo in un attributo valido? E 'attualmente gettando l'errore: non definito metodo `col =' # per ...Come impostare un attributo dinamico

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 

Inoltre, non so se il titolo è accurato, si prega di suggerire se 'attributo dinamico' è il termine sbagliato per questa situazione . Grazie

risposta

11

Credo che stai cercando il seguente:

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

Si può provare

dest_table.write_attribute(col, xyz) 

O

dest_table[col] = xyz 

O

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

'write_attribute' è un metodo privato –