ポリモーフィックRails Associations(逆行しますか?)
-
22-07-2019 - |
質問
「ケース」モデルのレールアプリには、多対1の多態性レールの関連付けがあります。ケースを持っているものはたくさんあるので、 'thing_that_has_a_case.case'を実行して、それぞれのケースにアクセスします。
しかし、私は別の方法で行こうとしているので、どうすればいいかわかりません。ケースオブジェクトにアクセスできますが、ケースに入れられているものにアクセスしたいです。レールにはこれを行う方法がありますか?オブジェクトの種類ごとに異なるsql findを実行するいスイッチを使用してそれを行うことができましたが、レールがより良い方法を持っていることを望んでいました。ありがとう!
解決
次のようなものをケースモデルに追加できます。
belongs_to :parent, :polymorphic => true
..これは、ケースモデルにフィールド parent_id
および parent_type
があることを前提としています(方法に応じて belongs_to
の最初の引数を変更します)これらの関連付けフィールドに名前を付けています)。これを取得したら、特定のケースインスタンスの case.parent
を参照できるようになります。
そして、明確にするために、この関係の一方には次のようなものがあります:
has_many :cases, :as => :parent, :dependent => :destroy
(説明に基づいて既に動作していると仮定しています)
所属していません StackOverflow