Как установить динамический атрибут

есть ли способ установить col как динамический или каким-то образом преобразовать его в допустимый атрибут? В настоящее время он выдает ошибку: undefined метод `col=' для #...

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

кроме того, не уверен, что название является точным, пожалуйста, предложите, если "динамический атрибут" является неправильным термином для этой ситуации. Спасибо

2 ответов


Я считаю, что вы ищете следующее:

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

вы можете попробовать

dest_table.write_attribute(col, xyz)

или

dest_table[col] = xyz

или

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