この共通モデルパターンには名前がないようです。
のような多くのプラグインで使用されてacts_as_taggable[_whatever]
おり、基本的に
、Tag などの特定のモデルを他のモデルとリンクすることができ
、Tag モデルにこれまで以上の belongs_to ステートメントを配置する必要はありません。
モデル (タグ)
を結合テーブルを表すポリモーフィック結合モデル (タグ付け) にリンクすることで機能します。
これにより、他のモデルを関連付けることができる自己完結型のモデルが作成されます。
(それらはhas_many
:as & a has_many :through を介して関連付けられます)
私はよく、このタイプのモデル関係を 1 つのものとして参照したいと思います。
多分それを「ポリリンクモデル」または「ポリリンクモデル」と呼んでいますか?
「ポリリンクモデルにして、コーディングしながら他のモデルに関連付ける」など。
他の提案はありますか?
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