如何设置动态属性

时间:2012-03-30 00:26:04

标签: ruby-on-rails ruby dynamic-attributes

有没有办法将 col 设置为动态或以某种方式将其转换为有效属性? 它目前正在抛出错误:未定义的方法`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 个答案:

答案 0 :(得分:13)

我相信您正在寻找以下内容:

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

答案 1 :(得分:10)

你可以尝试

dest_table.write_attribute(col, xyz)

OR

dest_table[col] = xyz

OR

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