如何创建具有多种类型的 has_many 关联?

whi*_*rps 5 ruby-on-rails polymorphic-associations ruby-on-rails-3.1

我有以下内容:

  • 链接模型
  • LinkItem 模型,我希望其具有以下类型
    • 一条评论
    • 一个标签
    • ...

我正在使用这段代码:

链接模型

class Link < ActiveRecord::Base  
  has_many :link_items  
end
Run Code Online (Sandbox Code Playgroud)

链接项目模型

class LinkItem < ActiveRecord::Base
  belongs_to :link
end

class Comment < LinkItem
end

class Tag < LinkItem
end
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何告诉 Rails 我的 LinkItem 模型应该是多态的。我已经阅读了有关关联的 Rails 指南和其他教程,但这些仅描述了如何创建与多个其他模型的 own_to 关联,而不是相反。

所以我的问题是:
如何创建一个 has_many 关联,其中关联的实例可以是不同类型?或者为评论、标签等创建单独的模型并将它们分别与我的链接模型相关联会更好吗?

编辑
实际上我的代码有效。
我只是尝试在我的数据库中使用“type”列(而不是“link_item_type”),rails 自动使用它来保存/确定我的 LinkItems 的正确子类(感谢 Ogz 向导的提示)
但是我仍然不能访问 LinkItem 的子类,而无需先引用 LinkItem。这是某种延迟加载吗?

nic*_*des 0

这称为多态关联。这是一些文档。