我使用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
的問題是,創造了新的後列,我不能做legislator.update_attribute(column_name, value)
,因爲這個類沒有拿起新列並抱怨它不存在。
我該如何讓它再次查詢表結構?
是否有一種簡單的方法適用於每個模型,例如:'ActiveRecord :: Base。 reset_column_information'? – Dorian 2015-01-12 11:30:49
是的,'ActiveRecord :: Base.descendants.each(&:reset_column_information)' – Joao 2017-07-29 17:17:45