diff options
author | Vitaliy @blackst0ne Klachkov <blackst0ne.ru@gmail.com> | 2017-10-08 14:25:31 +1100 |
---|---|---|
committer | Vitaliy @blackst0ne Klachkov <blackst0ne.ru@gmail.com> | 2017-10-08 14:25:31 +1100 |
commit | a7e198a7b4b27acea2d4e971fd8cb6c572020820 (patch) | |
tree | 3e5546ce58fab80ba9237898675d3b456bd8f158 | |
parent | dfbbc9a15e1c1f6723baec87e8c2eb75bf623e79 (diff) | |
download | gitlab-ce-a7e198a7b4b27acea2d4e971fd8cb6c572020820.tar.gz |
[Rails 5] Fix db/migrate/20170707183807_add_group_id_to_milestones.rb
-rw-r--r-- | db/migrate/20170707183807_add_group_id_to_milestones.rb | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/db/migrate/20170707183807_add_group_id_to_milestones.rb b/db/migrate/20170707183807_add_group_id_to_milestones.rb index 4aa22e72e20..0b56b6ace38 100644 --- a/db/migrate/20170707183807_add_group_id_to_milestones.rb +++ b/db/migrate/20170707183807_add_group_id_to_milestones.rb @@ -14,12 +14,27 @@ class AddGroupIdToMilestones < ActiveRecord::Migration # with null values. execute "DELETE from milestones WHERE project_id IS NULL" - # Drop foreign key explicitly for MySQL. - if Gitlab::Database.mysql? - remove_foreign_key(:milestones, column: :group_id) if foreign_key_exists?(:milestones, column: :group_id) - end - + remove_foreign_key_for_mysql(:groups) remove_column :milestones, :group_id + + remove_foreign_key_for_mysql(:projects) change_column :milestones, :project_id, :integer, null: false + add_foreign_key_for_mysql(:projects) + end + + private + + # Create the foreign key explicitly for MySQL. + def add_foreign_key_for_mysql(target) + if Gitlab::Database.mysql? && !foreign_key_exists?(:milestones, target) + add_foreign_key :milestones, target, on_delete: :cascade + end + end + + # Drop the foreign key explicitly for MySQL. + def remove_foreign_key_for_mysql(target) + if Gitlab::Database.mysql? && foreign_key_exists?(:milestones, target) + remove_foreign_key :milestones, target + end end end |