Domanda

Ho due modelli che possono avere tag aggiunti a loro.

    .
  • Player
  • Biglietto

    E ho un modello Tag che appartiene a entrambi, quindi ho due modelli di join

      .
    • tag_ticket
    • tag_player

      Sto ricevendo un errore Could not find the association :tag_tickets in model Ticket ma la mia associazione è lì dentro.

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

      Mi sto solo concentrando sul modello Ticket ma il modello del giocatore dovrebbe sembrare simile.

      Questa è la mia migrazione per 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
      
      .

È stato utile?

Soluzione

È necessario specificare il: Tag_Teket Iscriviti prima come questo:

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

È inoltre necessario specificare i join nel modello TagTicket:

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

In alternativa, puoi saltare tutto questo e utilizzare un join di habtm (consigliato solo se il join tag_ttekets è veramente solo usato come unione e non ha chiave primaria per sé).In questo caso non avresti il modello Tagticket (solo una tabella Tag_Tickets) e il modello di biglietto sarebbe simile a questo:

class Ticket < ActiveRecord::Base
  has_and_belongs_to_many :tags
end
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top