将多个模型与模型相关联

时间:2011-08-21 04:14:48

标签: ruby-on-rails activerecord

让我们首先查看我的数据库模式,这是一个简单的数据库表结构,如下所示。

page table (id, title, description, link)
post table (id, body)
list table (id, name)
user table (id, uname, upawd)
tag table  (id, name)

tag_item (tag_id, item_id, item_type) 

tag_item的数据行将是这样的。

tag_id   item_id    item_type    
1        1          page 
1        2          page 
1        1          post  
2        1          user 
3        1          list 

item_type表中的item_idtag_item字段作为相关的表名和表主键ID,换句话说,我想将标记用作关键字关联所有表格。 那么,如何在单个模型类中编写代码以将标记相互关联。 如何用轨道的方式设计类模型中的关联。

提前感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用has_many :through来实现关联:

class Type < ActiveRecord::Base 
    has_many :tag_items
    has_many :tags, :through => :tag_items
end

class Tag < ActiveRecord::Base  
    has_many :tag_items
    has_many :types, :through => :tag_items
end