Ha molti: attraverso l'associazione non trovata
-
14-11-2019 - |
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
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