0

タグを追加できるモデルが2つあります。

  • プレーヤー
  • チケット

両方にTag属するモデルがあるので、2つの結合モデルがあります

  • tag_ticket
  • tag_player

Could not find the association :tag_tickets in model Ticketエラーが発生しましたが、関連付けはそこにあります。

class Ticket < ActiveRecord::Base
  has_many :tag_tickets
  has_many :tags, :through => :tag_tickets
end

モデルに焦点を当てていTicketますが、プレーヤーモデルは似ているはずです。

これは私の移行ですTagTicket

class CreateTagTickets < ActiveRecord::Migration
  def change
    create_table :tag_tickets do |t|
      t.integer :ticket_id
      t.integer :tag_id

      t.timestamps
    end
  end
end
4

1 に答える 1

1

最初に:tag_ticketsjoinを次のように指定する必要があります。

class Ticket < ActiveRecord::Base
  has_many :tag_tickets
  has_many :tags, :through => :tag_tickets
end

TagTicketまた、モデルで結合を指定する必要があります。

class TagTicket < ActiveRecored::Base
  belongs_to :ticket
  belongs_to :tag
end

または、これをすべてスキップしてhabtm結合を使用することもできます(tag_tickets結合が実際に結合としてのみ使用され、それ自体の主キーがない場合にのみ推奨されます)。この場合、TagTicketモデルはなく(tag_ticketsテーブルのみ)、Ticketモデルは次のようになります。

class Ticket < ActiveRecord::Base
  has_and_belongs_to_many :tags
end
于 2012-02-29T17:03:34.430 に答える