我希望用3种类型的对象构建一个简单的应用程序:
作者撰写文章,并制作适当的标签。
这样:
author has many articles; article belongs to author
但是标签怎么样?我希望文章和作者都有标签。
我可以想象:
author has many tags; article has many tags
但是标签模型上的声明呢?
tag belongs to authors; tag belongs to articles
这两个人是否会相互干涉?
我担心标签需要作者和文章父母。如果它有两种类型的父项,删除一个将删除标记,另一个父项由于数据库中的外键约束而删除。
提前致谢!
答案 0 :(得分:6)
您正在寻找polymorphyc associations:
class Tag < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
end
class Author < ActiveRecord::Base
has_many :tags, :as => :taggable
end
class Article < ActiveRecord::Base
has_many :tags, :as => :taggable
end