Ruby on rails 可以属于多个其他对象的对象的模型设计?

Ruby on rails 可以属于多个其他对象的对象的模型设计?,ruby-on-rails,Ruby On Rails,我希望用3种类型的对象构建一个简单的应用程序: 文章(RoR的第一天,为什么PHP仍然很棒,RoR与PHP) 作者(鲍勃、史蒂夫、简) 标签(RoR、PHP) 作者写一篇文章,并做适当的标记 因此: 但是标签呢?我希望文章和作者都有标签 我可以想象: author has many tags; article has many tags 但是标签模型上的声明呢 tag belongs to authors; tag belongs to articles 这两个人会互相干涉吗 我担心的是

我希望用3种类型的对象构建一个简单的应用程序:

  • 文章(RoR的第一天,为什么PHP仍然很棒,RoR与PHP)
  • 作者(鲍勃、史蒂夫、简)
  • 标签(RoR、PHP)
作者写一篇文章,并做适当的标记

因此:

但是标签呢?我希望文章和作者都有标签

我可以想象:

author has many tags; article has many tags
但是标签模型上的声明呢

tag belongs to authors; tag belongs to articles
这两个人会互相干涉吗

我担心的是,标签将需要作者和文章父级。如果它同时具有两种类型的父项,则由于数据库中的外键约束,删除一个将删除标记和另一个父项

提前谢谢

您正在寻找:

class标记true
结束
类作者:taggable
结束
类文章:taggable
结束

这非常有用。我有人告诉我,我应该声明属于:作者;属于:标签中的物品。这种方法的区别和潜在的优点/缺点是什么?主要区别是,如果您声明2属于行,那么表中需要有2个外键,如果您将有更多可标记的内容,则需要向表中添加外键。而polymorphyc关联将使用1个键和1个列来处理类型。你可以像使用普通关联一样使用它:tag.authors、tag.articles、article.tag等等,所以我的理解是多态关联只允许每个标记有一个属于它的标记。这样可以防止标签同时属于多个作者和文章。似乎这本书属于:作者;属于:文章方法会更好。嗯,事实上,属于不太适合你,因为标签应该有很多文章(一个标签可以分配给不同的文章/作者),而文章/作者可以有很多标签,对吗?如果是的话,也许更好的方法是使用@alony:can你可以用gmail上网吗。非常紧急。。请姐姐:(
tag belongs to authors; tag belongs to articles
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