문제

나는 많은 마이그레이션을 만들고 있는데, 그 중 일부는 표준 "생성 테이블"또는 "수정 테이블"마이그레이션이며 일부는 데이터를 수정합니다. 실제 ActiveRecord 모델을 사용하여 데이터를 수정합니다.

Blog.all.each do |blog|
  update_some_blog_attributes_to_match_new_schema
end

문제는 블로그 클래스를로드 한 다음 테이블을 수정 한 다음 블로그 클래스를 다시 사용하면 모델에 기존 테이블 정의가 있으며 새 테이블에 저장할 수 없다는 것입니다. 클래스와 속성 정의를 다시로드하여 재사용 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

대답은 예입니다!

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

# 여기에서 DB 테이블을 변경/수정하십시오

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