在rails迁移中添加:on_delete到已存在的foreign_key

时间:2016-08-24 08:52:34

标签: ruby-on-rails ruby database foreign-keys migration

我已经以这种方式创建了数据库中的外键:

class CreateUser < ActiveRecord::Migration
  def change
    create_table do ... end
    add_foreign_key :users, :admins, column: :admin_id
  end
end

但忘了添加on_delete: :nullify。移民已经被推动了用于生产。我想添加新的迁移,这将为此PK约束添加cascale删除。怎么实现呢?

1 个答案:

答案 0 :(得分:7)

您可以在下次迁移中删除并添加外键:

a(){
    num1="$1";
    num2="$3";
    if [ "$2" = "<" ]
    then
    op="-lt"
    elif [ "$2" = ">" ]
    then
    op="-gt"
    else
    op="-eq"
    fi
    condition="$num1 $op $num2"
    while eval "[ $condition ]" # --> evaluate the condition
    do
        ((num1++)) #num1=num1+1 is in the original is wrong.
        echo "increased num1:$num1"  
        condition="$num1 $op $num2" #rebuild the condition
    done
}

b(){
    num1=1
    num2=3
    a "$num1" '<' "$num2" #quote the params, else '<' stands for redirection
}

b