【问题标题】:Adding cascade deletion in a rails在rails中添加级联删除
【发布时间】:2015-12-16 22:17:51
【问题描述】:

我有一个 schema.rb:

add_foreign_key "dog", "trees"

我想说:

add_foreign_key "dog", "trees", on_delete: :cascade

我正在考虑这样的迁移:

class ModifyTreeRefFromDogs < ActiveRecord::Migration
  def change
    change_column  ...
  end
end

【问题讨论】:

  • ...您是否尝试运行它,然后查看 db-structure 是否有效?
  • “...”需要填写一些我认为的代码。 @TarynEast
  • 你看到dependent: :destroy属性了吗?
  • 是的...使用您已经编写的代码 :) 我已将其放在答案中以便您清楚了解

标签: sql ruby-on-rails migration


【解决方案1】:

删除它并重新添加它(它是一个索引,不会丢失任何信息)。

class ModifyTreeRefFromDogs < ActiveRecord::Migration
  def change
    remove_foreign_key "dog", "trees"
    add_foreign_key "dog", "trees", on_delete: :cascade
  end
end

注意:这似乎是 Rails 中外键的一个很好的参考,并且包含您尝试过的 on_delete 代码:Foreign Keys in Rails 4.2

【讨论】:

  • schema.rb 强烈建议不要直接更改它,而是使用迁移来这样做。
  • 它给出了: -- drop_foreign_key("dog", "trees") rake aborted! StandardError: 发生错误,所有以后的迁移都取消了:
  • 未定义方法`drop_foreign_key'
  • remove 而不是 drop 有效,而且总体上有效,谢谢
  • 是的,我总是把 rails 和 sql 词混为一谈...... drop/remove :)
猜你喜欢
  • 1970-01-01
  • 2020-04-15
  • 2012-12-04
  • 2012-05-08
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
相关资源
最近更新 更多