0

「ケース」モデルのレールアプリに多対1のポリモーフィックレール関連付けがあります。ケースを持つものはたくさんあるので、thing_that_has_a_case.case を実行して、それぞれのケースにアクセスします。

しかし、私は別の方法で行こうとしていますが、方法がわかりません。ケースオブジェクトにアクセスできますが、ケース化されているものにアクセスしたいです。レールにはこれを行う方法がありますか?オブジェクトのタイプごとに異なるSQL検索を行う醜いスイッチでそれを行うことができましたが、レールがより良い方法を持っていることを望んでいました. ありがとう!

4

1 に答える 1

1

ケースモデルに次のようなものを追加できます。

belongs_to :parent, :polymorphic => true

parent_id..これは、フィールドがあり、ケース モデル内にあることを前提としています (これらの関連付けフィールドの命名方法に応じてparent_type、最初の引数を に変更します)。belongs_toこれがあればcase.parent、特定のケース インスタンスを参照できるようになります。

そして、明確にするために、この関係の片側には次のようなものがあります。

has_many :cases, :as => :parent, :dependent => :destroy

(あなたの説明に基づいて、すでにそれが機能していると思います)

于 2009-08-05T21:41:48.873 に答える