English 中文(简体)
我该如何强制ActiveRecord重新加载一个类?
原标题:
  • 时间:2008-10-14 11:40:13
  •  标签:

我正在创建许多迁移,其中一些是标准的“创建表”或“修改表”迁移,一些是修改数据的迁移。我正在使用我的实际ActiveRecord模型来修改数据,例如:

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 更加方便。

创建新实例:


Old_blogs = Blog.all

在这里更改/修改数据库表

New_blogs = Blog.all # this should be reloaded or you could use the .reload on this

更改信息,将旧信息加载到新信息中。

ex.

Old_blogs.each do |blog|
  New_blogs.find(blog.id).title = blog.title
end




相关问题
热门标签