当前位置:  开发笔记 > 编程语言 > 正文

如何强制ActiveRecord重新加载一个类?

如何解决《如何强制ActiveRecord重新加载一个类?》经验,为你挑选了2个好方法。

我正在创建一系列迁移,其中一些是标准的"创建表"或"修改表"迁移,其中一些迁移修改数据.我正在使用我的实际ActiveRecord模型来修改数据,a:

Blog.all.each do |blog|
  update_some_blog_attributes_to_match_new_schema
end

问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并且无法保存到新表.有没有办法重新加载类及其属性定义,以便我可以重用它们?



1> James A. Ros..:

答案是肯定的!

Blog.reset_column_information


重置所有列!`的ActiveRecord :: Base.descendants.each {| C | c.reset_column_information}`
留意有关系的模特.如果是`类博客; belongs_to所有者; 结束`,然后你可能需要除了Blog之外的'Owner.reset_column_information`.

2> 小智..:

我一直在迁移中使用新模型

    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比较方便。

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有