Rails 3的默认值是什么:依赖于has_many和belongs_to

fxt*_*cle 13 ruby-on-rails default-value has-many belongs-to ruby-on-rails-3

在rails 3中,我知道我可以使用:dependent =>:delete选项强制删除belongs_to和has_many关系上的依赖对象.不过我想知道,

如果我没有指定,默认行为是什么:dependent => ...

干杯,哈城

Rob*_*vis 20

虽然文档中没有拼写,但默认行为是对关联对象不执行任何操作.也就是说,删除或销毁对象不会删除或销毁它所属的对象或具有许多对象.


Bla*_*lor 5

has_many使用:nullify策略,它将外部变量设置为null。对于has_many:through,它将使用delete_all。

对于has_many,destroy将始终调用要删除的记录的destroy方法,以便运行回调。但是delete会根据:depend选项指定的策略进行删除,或者,如果没有给出:dependent选项,则它将遵循默认策略。默认的策略是:nullify(将外键设置为nil),但has_many:through除外,默认策略是delete_all(删除联接记录,而不运行其回调)。

- ActiveRecord的::协会:: ClassMethods

不确定确切地是belongs_to会做什么,并且在文档中找不到任何内容。我将尝试尽快进行挖掘并更新答案。

  • 您确定情况仍然如此吗?我刚刚体验到默认行为是不使外键无效。我必须显式设置`dependent::nullify`使其无效。我正在使用ruby 2.0.0和Rails 4.0.0。 (7认同)