Tôi đang tạo một loạt các lần di chuyển, một số trong đó là di chuyển "tạo bảng" hoặc "sửa đổi bảng" chuẩn và một số sửa đổi dữ liệu. Tôi đang sử dụng mô hình ActiveRecord thực tế của tôi để sửa đổi dữ liệu, a la:Làm cách nào để bắt buộc ActiveRecord tải lại lớp học?
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Vấn đề là nếu tôi tải các lớp Blog, sau đó sửa đổi bảng, sau đó sử dụng lớp Blog một lần nữa, các mô hình có định nghĩa bảng cũ và không thể lưu vào bảng mới. Có cách nào để tải lại các lớp và định nghĩa thuộc tính của chúng để tôi có thể tái sử dụng chúng không?
Xem ra các mô hình có mối quan hệ. Nếu 'class Blog; thuộc về Chủ sở hữu; cuối cùng, sau đó bạn có thể cần 'Owner.reset_column_information' ngoài Blog. –
Đặt lại tất cả các cột! 'ActiveRecord :: Base.descendants.each {| c | c.reset_column_information} ' – zm1th
Ném 'Rails.application.eager_load!' trước bất kỳ cuộc gọi nào đến con cháu để khắc phục sự cố với các mô hình không được tự động tải – elju