0

この共通モデルパターンには名前がないようです。

のような多くのプラグインで使用されて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
4

1 に答える 1