シナリオは、1 つは Room で、もう 1 つは Tickets の 2 つのモデルがあり、関係は Room has_many :tickets です。
要件は、ルームが削除されているときにチケットを削除してはならないということです。チケットテーブルには room_id と呼ばれる外部キーがあるため、これを達成する方法は?
そして、これができるとしたら、その特定のチケットの部屋情報をどのように取得できるでしょうか?
シナリオは、1 つは Room で、もう 1 つは Tickets の 2 つのモデルがあり、関係は Room has_many :tickets です。
要件は、ルームが削除されているときにチケットを削除してはならないということです。チケットテーブルには room_id と呼ばれる外部キーがあるため、これを達成する方法は?
そして、これができるとしたら、その特定のチケットの部屋情報をどのように取得できるでしょうか?
これは Rails の一般的な動作です。私はdependent: :destroy
あなたの協会で を使用していると思います。
あなたがしたいことはdependent: :nullify
. これにより、関連付けられたチケットを削除せずにルーム オブジェクトが削除room_id
され、チケットの が null に更新されるだけです。
class Room < ActiveRecord::Base
has_many :tickets, dependent: :nullify
end
削除後に部屋の詳細にアクセスするための 2 番目の質問によると、実際の削除ではなく、soft_delete を使用することをお勧めします。ここで行うことは、ルームが削除されるときに、実際に削除するのではなく、ソフト削除することです。したがって、チケットの記録は保持され、部屋の詳細も使用できます。
同じために利用可能な宝石があります。そのような宝石の 1 つがパラノイアです。この gem に関するさまざまなチュートリアルを参照できます。
これが役に立てば幸いです。他にガイドが必要な場合はお知らせください。
あなたはこれを行うことができます
class Room < ActiveRecord::Base
has_many :tickets,dependent: :nullify
end
これをチェックアウト