シナリオには、ルームと2つのモデルがあり、チケットとその関係はルームhas_many:チケットです。Rails has_many associationsは親オブジェクトを削除しますが子は削除しません
客室がチケットを削除しているときは削除しないでください。チケットテーブルにroom_idという外部キーがあるので、これを行うにはどうすればよいですか?
これを行うことができたら、その特定のチケットの客室情報をどのように取得できるのかを考えてみましょう。
シナリオには、ルームと2つのモデルがあり、チケットとその関係はルームhas_many:チケットです。Rails has_many associationsは親オブジェクトを削除しますが子は削除しません
客室がチケットを削除しているときは削除しないでください。チケットテーブルにroom_idという外部キーがあるので、これを行うにはどうすればよいですか?
これを行うことができたら、その特定のチケットの客室情報をどのように取得できるのかを考えてみましょう。
これは、削除、親の後にヌルでFOREIGN_KEY変わり、has_manyの関連付けにdependent: :nullify
を追加:レールのドキュメントで
has_many :tickets, dependent: :nullify
ルック:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
をあなたはこの
class Room < ActiveRecord::Base
has_many :tickets,dependent: :nullify
end
を行うことができます
チェックアウトthis
これはRailsの一般的な動作です。あなたの協会でdependent: :destroy
を使っていると思います。
dependent: :nullify
とします。これは、関連するチケットを削除せずにお部屋のオブジェクトを削除してのみ削除した後に部屋の詳細にアクセスするにはあなたの2番目の質問を1として
class Room < ActiveRecord::Base
has_many :tickets, dependent: :nullify
end
チケットにnullにroom_id
を更新してしまう、私はsoft_deleteの代わりに使用することができ示唆しています実際の削除。ここでは、部屋が削除されているときに、それを完全に削除するのではなく、ソフト削除します。したがって、チケットの記録はそのまま残り、部屋の詳細を使用することもできます。
同じような宝石があります。 1つのそのような宝石はParanoiaです。あなたはこの宝石について様々なチュートリアルを見ることができます。
希望すると便利です。他のガイダンスが必要な場合は教えてください。
@ak ... sha、説明した感覚。 – Gabbar
あなたの質問を解決したら答えを受け入れますか? – Aakanksha
@ak ... shaは受け入れられるべきです、よく私はこれを尋ねていませんが、あなたの答えは私の疑問のいくつかをクリアしました、それをalredy upvoted。 :) – Gabbar