0

这种常见的模型模式似乎没有名字。

它用于许多插件,例如acts_as_taggable[_whatever],它基本上允许
将某个模型(如 Tag)与任何其他模型链接,而无需
在 Tag 模型中放置更多的 belongs_to 语句。

它通过将模型(标记)链接到
表示连接表的多态连接模型(标记)来工作。这将创建一个独立的模型,任何
其他模型都可以在其中关联。
(它们通过has_many:as 和 has_many :through 关联)

我经常想将这种类型的模型关系称为一件事。
也许称它为“多链接模型”或“多链接模型”?
例如,“使其成为一个多链接模型,并在您编写代码时将其与任何其他模型相关联。”

还有其他建议吗?

这是模型的内部工作原理acts_as_taggable

class Tag < ActiveRecord::Base
  has_many :taggings
end

class Tagging < ActiveRecord::Base
  belongs_to :tag
  belongs_to :taggable, :polymorphic => true
end

class Whatever < ActiveRecord::Base
  has_many :taggings, :as => :taggable, :dependent => :destroy
  has_many :tags, :through => :taggings
end

class CreateTaggings < ActiveRecord::Migration
  def self.up
    create_table :taggings do |t|
      t.references :tag
      t.references :taggable, :polymorphic => true
      t.timestamps
    end 
  end
end
4

1 回答 1

2

在 Rails 行话中,我看到这通常被称为普通的“ has_many :through”。同多态,“多态has_many :through”。去掉 Rails 的术语,我想一般模式可以称为“多态多对多关系”。

于 2009-08-06T17:26:53.503 回答