我正在创建一系列迁移,其中一些是标准的“创建表”。或“修改表格”或迁移,其中一些修改数据。我正在使用我的实际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 更方便。

创建新实例:


Old_blogs = Blog.all
  

#change / modify db table in here

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top