2016-05-24 7 views
1

私はRails 4.2.6で小さなアプリを構築しています。 、更新、ビューを作成し、それらにそれぞれを破壊する景色を眺めながら...Rails:HTスイッチ親の削除時の子オブジェクトの親?

:私は 次のクラスがあるとします。私は 複数のカジュアルアワーズを作成し、それらに複数のケースを割り当てます。

Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails 

問題ありませんが、それは予想されることだ:私はケースワーカーを削除しようとすると

現在、私はエラーを取得します。

一部CMSesで

、しかし、そのような依存関係を持つオブジェクトを破壊する 試みをユーザーならば、あなたは別の親にオブジェクトを割り当てるオプションで にそれらを提示、または それらを破壊することができます。この機能を提供するために、Railsには標準的な方法がありますか?さもなければ、それは私が012eworksコントローラにbefore_destroy句を入れる必要があるようです...これは本当ですか?私は必要があればそのような方法を書くことを恐れていないが、どこかで使用するためにそこにあれば、私はむしろこの輪を再発明しないだろう。

答えて

2

has_manyステートメントに子を削除するか、外部キーフィールドをNULLにするかによって、dependent: :destroyまたはdependent: :nullifyのいずれかを追加できます。

たとえば、あなたが使用することができ、削除されているケースワーカーに属するケースを削除するには:

は私の知識のレールに
class Caseworker < ActiveRecord::Base 
    has_many :cases, dependent: :destroy 
end 

が別の親に子供を再割り当てする方法がありません - あなたは、コードを書く必要があるだろうそれを自分で行うこと。

関連する問題