Кажется, нет имени для этой общей модели модели.
Он используется во многих плагинах, таких как acts_as_taggable[_whatever]
, и в основном позволяет
связать определенную модель, такую как Tag, с любой другой моделью без необходимости ставить
все более и более принадлежащие операторы в модели тегов.
Работает, если ваша модель (Tag) связана с моделью полиморфного соединения (Tagging)
представляющий таблицу соединений. Это создает автономную модель, в которой любой
другая модель может относиться.
(Они связаны через has_many
: as & a 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