سؤال

وأنا خلق مجموعة من الهجرات، والبعض منها هي المعيار "إنشاء جدول" أو "تعديل الجدول" الهجرات، والبعض منها تعديل البيانات. أنا باستخدام بلدي نماذج أكتيفيريكورد الفعلية لتعديل البيانات، على غرار:

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
<اقتباس فقرة>   

و# تغيير / تعديل الجدول ديسيبل هنا

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