質問

「ケース」モデルのレールアプリには、多対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

(説明に基づいて既に動作していると仮定しています)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top