在ActiveRecord模型类中重新加载列名称

Hel*_*iro 12 database scripting schema activerecord ruby-on-rails

我有一个使用ActiveRecord的脚本,它根据从CSV文件读取的值动态创建列名,如下所示:

FasterCSV.foreach('votes.csv', :headers => true) do |row|
  column_name = "roll_call_id_#{row['roll_call_id']}"

  if !Legislator.columns.map(&:name).include?(column_name)
    connection_pool.connection.add_column('legislators', column_name, 'string')
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是,在创建新列之后,我无法执行a,legislator.update_attribute(column_name, value)因为类没有获取新列并抱怨它不存在.

如何让它再次查询表结构?

Hel*_*iro 33

Legislator.reset_column_information(API信息)

  • 是的,`ActiveRecord :: Base.descendants.each(&:reset_column_information)` (3认同)