微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 如何创建多种类型的has_many关联?

我有以下内容

>一个链接模型
>一个LinkItem模型,我希望它是以下类型

>评论
>一个标签
> ……

我正在使用此代码

链接模型

class Link < ActiveRecord::Base  
  has_many :link_items  
end

LinkItem模型

class LinkItem < ActiveRecord::Base
  belongs_to :link
end

class Comment < LinkItem
end

class Tag < LinkItem
end

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

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

编辑
其实我的代码有效.
我只是尝试在我的数据库中使用’type’-column(而不是’link_item_type’)并且rails自动使用它来保存/确定我的LinkItems的正确子类(感谢Ogz的向导提示)
但是,如果不首先引用LinkItem,我仍然无法访问LinkItem的子类.这是一种懒惰的加载吗?

解决方法

如果您正在寻找多态关联 nicholaides 有正确的方法.
如果您正在寻找has_meny多态关联,请查看 the answer to “Setting up a polymorphic has_many :through relationship”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐