2

私は次のものを持っています:

class Item < ActiveRecord::Base
  # assets
  has_many :assets, :as => :assetable, :dependent => :destroy

class Asset < ActiveRecord::Base
  belongs_to :assetable, :polymorphic => true

そして、できるようにしたい:

a=Asset.find(5)
a.item  # no dice

アセットから始まる関連アイテムを取得するにはどうすればよいですか?

どうも

4

2 に答える 2

2

関連するアイテムを取得するには、Assetクラスで設定したリレーションシップ名を使用する必要があります。この関係をとして宣言しているので:assetable、アイテムを「評価可能」と呼ぶ必要があります。

Railsガイドに従ってデータベースが正しく設定されていると仮定すると、次のことができるはずです。

a=Asset.find(5)
a.assetable
于 2012-09-18T02:12:30.053 に答える
1

ポリモーフィック モデル (この場合はアセット) を作成する場合、関連するポリモーフィック レコードを参照するには、対応するテーブルに _id 列と _type 列の両方が必要です。あなたの場合、この資産レコードには、assetable_id と assetable_type ("Item" に等しい文字列) が必要です。次に、a.item を呼び出すと、モデルは「Item」テーブルで id == assetable_id のレコードを探すことを認識します。

于 2012-09-18T01:25:18.523 に答える