2

シナリオは、1 つは Room で、もう 1 つは Tickets の 2 つのモデルがあり、関係は Room has_many :tickets です。

要件は、ルームが削除されているときにチケットを削除してはならないということです。チケットテーブルには room_id と呼ばれる外部キーがあるため、これを達成する方法は?

そして、これができるとしたら、その特定のチケットの部屋情報をどのように取得できるでしょうか?

4

3 に答える 3

8

これは Rails の一般的な動作です。私はdependent: :destroyあなたの協会で を使用していると思います。

あなたがしたいことはdependent: :nullify. これにより、関連付けられたチケットを削除せずにルーム オブジェクトが削除room_idされ、チケットの が null に更新されるだけです。

class Room < ActiveRecord::Base
    has_many :tickets, dependent: :nullify
end

削除後に部屋の詳細にアクセスするための 2 番目の質問によると、実際の削除ではなく、soft_delete を使用することをお勧めします。ここで行うことは、ルームが削除されるときに、実際に削除するのではなく、ソフト削除することです。したがって、チケットの記録は保持され、部屋の詳細も使用できます。

同じために利用可能な宝石があります。そのような宝石の 1 つがパラノイアです。この gem に関するさまざまなチュートリアルを参照できます。

これが役に立てば幸いです。他にガイドが必要な場合はお知らせください。

于 2017-11-07T07:30:47.747 に答える
1

あなたはこれを行うことができます

class Room < ActiveRecord::Base
 has_many :tickets,dependent: :nullify
end

これをチェックアウト

于 2017-11-07T07:30:21.217 に答える