Problema con has_many autoreferenziale: attraverso le associazioni di Rails
-
21-08-2019 - |
Domanda
Stavo leggendo su has_many autoreferenziale: attraverso situazioni di dati oggi, perché sto cercando di costruire un'applicazione Rails che li utilizza. Ho trovato questo su Internet, e ho una domanda su di esso. Permettetemi di postare questo codice di esempio dal blog di questo tipo:
create_table :animals do |t|
t.string :species
end
create_table :hunts do |t|
t.integer :predator_id
t.integer :prey_id
t.integer :capture_percent
end
class Animal < ActiveRecord::Base
has_many :pursuits, :foreign_key => 'predator_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :preys, :through => :pursuits
has_many :escapes, :foreign_key => 'prey_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :predators, :through => :escapes
end
class Hunt < ActiveRecord::Base
belongs_to :predator, :class_name => "Animal"
belongs_to :prey, :class_name => "Animal"
end
Diciamo che sto costruendo una pagina web che elenca il primo animale nel suo database. Sotto questa voce è un elenco di percentuali (capture_percent). Ogni percentuale si riferisce ad un animale che caccia di animali di questa pagina, ma non vi dico il nome dell'animale, solo la percentuale. Facendo clic su un dato percentuale vi porterà poi alla pagina dell'animale corrispondente.
Questa è una specie di una domanda difficile per avvolgere la testa in giro, lo so, ma sto cercando di capirlo. Avrei dovuto creare una tabella separata per CapturePercent, forse?
Soluzione
Dovrei essere necessario creare una tabella separata per CapturePercent, forse?
Non a tutti, non sembra essere nulla di complicato questo:
<ul>
<% @animal.pursuits.each do |pursuit| %>
<li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>