2012-03-30 22 views
5

Gibt es eine Möglichkeit, Spalte als dynamisch oder in irgendeiner Weise zu einem gültigen Attribut konvertieren? Es wirft derzeit den Fehler: nicht definierte Methode `col =‘ für # ...So legen Sie ein dynamisches Attribut fest

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 

auch nicht sicher, ob der Titel genau ist, bitte vorschlagen, wenn ‚dynamisches Attribut‘ der falsche Begriff für diese Situation ist . Dank

Antwort

11

Ich glaube, dass Sie die folgenden freuen:

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

Sie

versuchen
dest_table.write_attribute(col, xyz) 

ODER

dest_table[col] = xyz 

ODER

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

'write_attribute' ist eine private Methode –

Verwandte Themen