如何设置动态属性

iam*_*toc 7 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

此外,不确定标题是否准确,请建议"动态属性"是否适用于这种情况.谢谢

Rob*_*bin 13

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

dest_table.send(:"#{col}=", xyz)
Run Code Online (Sandbox Code Playgroud)


Har*_*tty 11

你可以试试

dest_table.write_attribute(col, xyz)
Run Code Online (Sandbox Code Playgroud)

要么

dest_table[col] = xyz
Run Code Online (Sandbox Code Playgroud)

要么

dest_table.send("#{col}=", xyz)
Run Code Online (Sandbox Code Playgroud)