كيف يمكنني إجبار أكتيفيريكورد لإعادة تحميل فئة؟
-
03-07-2019 - |
سؤال
وأنا خلق مجموعة من الهجرات، والبعض منها هي المعيار "إنشاء جدول" أو "تعديل الجدول" الهجرات، والبعض منها تعديل البيانات. أنا باستخدام بلدي نماذج أكتيفيريكورد الفعلية لتعديل البيانات، على غرار:
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
لا تنتمي إلى StackOverflow