我有以下内容:
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
我如何获得以资产开头的相关项目?
THX
答案 0 :(得分:2)
要获取关联项,您需要使用在Asset类中设置的关系名称。由于您已将此关系声明为:assetable
,因此您需要将该项称为“可声明”。
假设您根据Rails guide正确设置了数据库,您应该可以执行以下操作:
a=Asset.find(5)
a.assetable
答案 1 :(得分:1)
当您创建多态模型(在您的情况下为Asset)时,相应的表必须同时具有_id和_type列以引用相关的多态记录。在您的情况下,此资产记录需要具有assetable_id和assetable_type(字符串等于“Item”)。然后,当你调用a.item时,模型知道在“Item”表中查找id为== assetable_id的记录。