Avoid using live models in old migrations
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 17 Jul 2019 09:52:02 +0000 (11:52 +0200)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 17 Jul 2019 09:52:02 +0000 (11:52 +0200)
Instead, we define models in the migrations themselves. This ensures that
column names etc match the state of the database during the migration,
not the current live version of the model.

db/migrate/044_create_user_roles.rb
db/migrate/20120219161649_add_user_image_fingerprint.rb
db/migrate/20180204153242_tile_users.rb

index b62d8b8..0098a00 100644 (file)
@@ -1,6 +1,12 @@
 require "migrate"
 
 class CreateUserRoles < ActiveRecord::Migration[4.2]
+  class User < ActiveRecord::Base
+  end
+
+  class UserRole < ActiveRecord::Base
+  end
+
   def self.up
     create_enumeration :user_role_enum, %w[administrator moderator]
 
index 1e6a19c..c32d187 100644 (file)
@@ -1,4 +1,7 @@
 class AddUserImageFingerprint < ActiveRecord::Migration[4.2]
+  class User < ActiveRecord::Base
+  end
+
   def up
     add_column :users, :image_fingerprint, :string, :null => true
 
index cf20aed..61dbcb4 100644 (file)
@@ -1,4 +1,7 @@
 class TileUsers < ActiveRecord::Migration[5.1]
+  class User < ActiveRecord::Base
+  end
+
   def up
     add_column :users, :home_tile, :bigint
     add_index :users, [:home_tile], :name => "users_home_idx"