1

私は Rails を学んでおり、Beginning Rails 3 の本を読んでいます。関連付けがあると、has_many自動的にメソッドを受け取ります。

ユーザーが多くの記事を持っているとしましょう。

user.articles.delete(article)

その行は、記事の外部キーを「NULL」に設定するだけです。データベースから記事を消したい場合は、記事を破棄/削除する必要があるというのは正しいですか、それとも両方を行う方法はありますか?

関連付けを削除する前に、ユーザーと関係のある記事を破棄するとどうなりますか?

4

1 に答える 1

2

と の間にはいくつかの違いがdeleteありdestroyます。

delete メソッドは基本的に行を削除します..それだけです..

一方、destroyより多くのオプションを使用できます。

  • before_delete などのコールバック、またはモデルで指定された依存関係をチェックします。
  • また、削除されたばかりのオブジェクトをメモリに保持します。たとえば、「記事 #{article.id} が削除されました!!」というメッセージを残すことができます</li>
  • そして、あなたの質問に対する答え: オブジェクトに関連付けられたすべての子オブジェクトが削除されます。

だから、代わりに

user.articles.delete(article)

あなたが使用することができます

user.articles.destroy(article)

このようにして、データベース上で孤立した行を防ぐことができます。

于 2012-07-22T10:54:14.357 に答える