2017-11-07 7 views
1

シナリオには、ルームと2つのモデルがあり、チケットとその関係はルームhas_many:チケットです。Rails has_many associationsは親オブジェクトを削除しますが子は削除しません

客室がチケットを削除しているときは削除しないでください。チケットテーブルにroom_idという外部キーがあるので、これを行うにはどうすればよいですか?

これを行うことができたら、その特定のチケットの客室情報をどのように取得できるのかを考えてみましょう。

答えて

1

をあなたはこの

class Room < ActiveRecord::Base 
has_many :tickets,dependent: :nullify 
end 
を行うことができます

チェックアウトthis

4

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

dependent: :nullifyとします。これは、関連するチケットを削除せずにお部屋のオブジェクトを削除してのみ削除した後に部屋の詳細にアクセスするにはあなたの2番目の質問を1として

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

チケットにnullにroom_idを更新してしまう、私はsoft_deleteの代わりに使用することができ示唆しています実際の削除。ここでは、部屋が削除されているときに、それを完全に削除するのではなく、ソフト削除します。したがって、チケットの記録はそのまま残り、部屋の詳細を使用することもできます。

同じような宝石があります。 1つのそのような宝石はParanoiaです。あなたはこの宝石について様々なチュートリアルを見ることができます。

希望すると便利です。他のガイダンスが必要な場合は教えてください。

+0

@ak ... sha、説明した感覚。 – Gabbar

+0

あなたの質問を解決したら答えを受け入れますか? – Aakanksha

+0

@ak ... shaは受け入れられるべきです、よく私はこれを尋ねていませんが、あなたの答えは私の疑問のいくつかをクリアしました、それをalredy upvoted。 :) – Gabbar

関連する問題