【问题标题】:Rails dependent which options are possible?Rails 依赖哪些选项是可能的?
【发布时间】:2014-11-15 17:24:30
【问题描述】:

我在 Rails 4 中收到以下错误

依赖选项必须是销毁删除之一

显然https://github.com/rails/rails/issues/3458 之前支持其他选项。但是现在有什么可能? 我找不到任何其他文档

感谢您的帮助

【问题讨论】:

  • 你能告诉我们导致这个错误的代码行吗?哪些选项可用取决于您定义的关联类型...注意:编辑您的问题,并在此处添加代码,不要只回复 cmets...(cmets 中的代码格式很糟糕,相关代码确实应该是您原始问题的一部分)

标签: ruby-on-rails ruby-on-rails-4 destroy dependent-destroy


【解决方案1】:

文档可用here

似乎支持以下选项:

  • nil - 什么都不做(默认)。

  • :destroy - 导致所有关联对象也被销毁。

  • :delete_all - 直接从数据库中删除所有关联对象(因此不会执行回调)。

  • :nullify - 导致外键设置为 NULL。不执行回调。

  • :restrict_with_exception - 如果有任何关联记录,则会引发异常。

  • :restrict_with_error - 如果有任何关联对象,则会将错误添加到所有者。

【讨论】:

  • 也许值得注意的是,默认行为(当存在数据库级唯一约束且未配置 dependent 时)是捕获数据库级故障并引发 ActiveRecord::InvalidForeignKeyrestrict_with_exception 选项在行为上与此最接近,但它会在尝试数据库事务之前引发(更具描述性的)ActiveRecord::DeleteRestrictionError
【解决方案2】:

添加到 Ben 的答案中,如果需要在删除时不执行任何操作,也可以使用 nil(这是默认行为)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2018-10-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2012-05-30
    相关资源
    最近更新 更多