我如何强制ActiveRecord重新加载类?
我创build了一堆迁移,其中一些标准的“创build表”或“修改表”迁移,其中一些修改数据。 我正在使用我的实际ActiveRecord模型来修改数据,一个la:
Blog.all.each do |blog| update_some_blog_attributes_to_match_new_schema end 问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并不能保存到新的表。 有没有办法重新加载类和它们的属性定义,所以我可以重用它们?
答案是肯定的!
 Blog.reset_column_information 
我总是在迁移中使用新模型
  MyBlog < ActiveRecord::Base set_table_name 'blogs' end def self.up MyBlog.all.each do |blog| update_some_blog_attributes_to_match_new_schema end end 
 但Blog.reset_column_information更方便。 
创build新的实例:
 Old_blogs = Blog.all 
#在这里修改/修改数据库表
 New_blogs = Blog.all # this should be reloaded or you could use the .reload on this 
#改变信息,加载旧的新的
恩。
 Old_blogs.each do |blog| New_blogs.find(blog.id).title = blog.title end